Androidアプリ開発

再びDialogFragmentとFragmentのコールバックな関係

前回、DialogFragmentとFragmentをコールバックで連携させるコードを書きました。また、ダイアログ表示中に画面回転させると例外が発生する場合があることを述べました。そこで今回は、同じような動作で且つ画面回転しても例外が発生しないコードを書いてみ…

DialogFragmentとFragmentのコールバックな関係

DialogFragmentで設定した情報を、呼び出し元のFragmentに反映する方法のお話です。例えば、あるFragment上にボタンがあるとします。 そのボタンをタップするとダイアログ(DialogFragment)が表示され、そこで何らかの操作ができるとします。 その操作に応じ…

AndroidでFeliCaを読み込むとエラーが起きるとき

今回のエントリーは、AndroidでFeliCa内データへのアクセス中にExceptionが出てしまった時の対応についてです。Android本体にNFCの機能が搭載されている場合、「作法」に従ってコーディングすれば、Suicaなどの交通系FeliCa系カード内の残高や履歴データを参…

Androidアプリのソースコード公開

先月このブログでもお知らせしましたが、節電系ユーティリティアプリ「オート節電」をGoogle Playに公開しました。https://play.google.com/store/apps/details?id=com.kyakujin.android.autoeco&hl=jaAndroidアプリの入門書を読み終え、次により実践的なア…

節電系ユーティリティアプリをリリースしました

本日、Androidアプリを一つ、Google Playに公開しました。端末本体の節電系ユーティリティアプリです。https://play.google.com/store/apps/details?id=com.kyakujin.android.autoeco&hl=jaスクリーンショットの一部です。 よく知られているように、スマート…

AndroidアプリテストのためのJenkins設定 3

前回の続きです。今回は最後のステップ「3. プロジェクト毎の設定」の内容を記述します。 1. 実行環境の設定 Jenkinsを実行させるためのマシン環境の設定です。2. Jenkins共通設定 Jenkinsの実行全般に関わる設定です。3. プロジェクト毎の設定 (←今回) Jenk…

AndroidアプリテストのためのJenkins設定 2

前回の続きです。今回は以下のステップのうち「2. Jenkins共通設定」の内容を記述します。 1. 実行環境の設定 Jenkinsを実行させるためのマシン環境の設定です。2. Jenkins共通設定 (←今回) Jenkinsの実行全般に関わる設定です。3. プロジェクト毎の設定 Jen…

AndroidアプリテストのためのJenkins設定 1

今更ながらですが、個人的に作成しているAndroidアプリの作成プロセスにJenkinsを導入してみました。個人で行う小規模のアプリ作成であれば、とりあえずビルドしてエミュレータや実機でテストして、そして、ある程度の品質が確認できれば公開することは簡単…

Androidアプリのコード中にアサーションを使いたい

JavaでもC++でも、コードの中に成り立つべき条件があり、それを検証する場合はアサーションを活用することができます。例えばJavaならこのように書けます。 public testCompare(){ // 中略 int a = 0; int b = 1; assert isEqualNum(a, b); } private boolea…

TimePickerDialogのonTimeSet()が2回連続でコールされてしまう件の回避例

時間設定の便利なコンポーネントとしてTimePickerDialogがありますが、このダイアログはSDKバージョン4.1.x以降から想定外の動作をするケースがあります。今回はそれに対する回避策の例をメモ書きします。まず、TimePickerDialogというのはどういうものかと…

initLoader()とrestartLoader()のどちらを使うか

場合によってはrestartLoader()のみを使っても良さそう、というお話です。Androidアプリにおいて、例えばデータベースからデータを非同期で読み込み、ListViewなどへ読み込んだデータを反映するときなどは、ローダーという機構を使用することができます。そ…

XmlPullParserを使った処理が正常動作しない時の対処

RSSを読み込んでListViewに表示する処理を書いていたときのことです。Android 2.3.xでは問題なくXMLをパース出来ていたのに、Android 4.2.xではうまく動作しませんでした。その問題に対してどのようにコードを修正したのか、その具体的な方法をここに記録と…

AndroidでのSQL文発行でLIKE演算子を使う時のはまりポイント

Androidアプリ内でSQL文を発行する場合、LIKE演算子の使い方によっては例外が発生してしまいます。例えばメモ帳アプリの場合。「notes」というテーブルに、メモのタイトルを表す「title」列と、本文を表す「body」列が定義されているとします。ここで、中間…

Androidアプリ開発に役立った書籍 (2)

前回(Androidアプリ開発に役立った書籍(1))に引き続き、書籍の紹介です。前回紹介したのはAndroidアプリ開発を始めるにあたって必須となる知識が詰め込まれた書籍でしたが、今回紹介するのは可能な限り知っておいたほうが良いと思われる内容のものです。まず…

Androidアプリ開発に役立った書籍 (1)

スマホアプリでもWebアプリでも、最近ではエンジニアの方々がブログ上で技術的な情報を公開していたり、あるいはGitHubなどで直接ソースコードを見る(もしくは利用する)機会が増えたため、昔に比べれば開発することに対する参入障壁が低くなりました。基本、…

Android SDKのバージョンによってinsertWithOnConflict()の戻り値が異なる

追記: 2013/08/20 以下の記述はエミュレータで検証した結果です。実機の場合は挿入しようとしたROWIDがそのまま返却されるケースがあるようです。SQLiteでUNIQUE制約が設定されたカラムに重複データをinsertすれば一意制約違反になるわけですが、 insertWith…

RobotiumでisCheckBoxChecked()が機能しない件の回避策

最近、Robotiumを使ったアプリケーションの評価を試しているのですが、やはりというか一部不安定な機能があります。たとえば、isCheckBoxChecked()というメソッド。これは、任意のチェックボックスがONになっているかをテストするためのものですが、どのよう…

RobotiumでCursorアクセス

Robotiumを使ってCursorのデータを取得する方法のメモです。Androidアプリケーションのテストを実施する場合、通常ではJUnitを使用すると思いますが、ActionBarSherlockのライブラリを導入しているとJUnit実行時に例外が発生します。ActivityInstrumentation…

SimpleCursorAdapterを継承してImageViewとTextViewを表示させる

コンテンツプロパイダから取得したデータ等を単純にListViewにリスト表示するだけであれば、SimpleCursorAdapterを使えば容易にできます。では、その取得したデータだけではなく、別途用意したアイコンもリストの左端等にちょこっと表示させたい場合はどうす…

APIレベルを変更したらソースの修正が反映されなくなった

APIレベル4(Android 1.6)でアプリを開発していたのですが、訳あってAPIレベル8(Android 2.2)に変更することにしました。プロジェクトのプロパティにてターゲットをAndroid 2.2に変更。そして、AndroidManifest.xmlの中のandroid:minSdkVersionを"8"に修正。A…

ListViewのチェックボックスをデフォルトでONにしたい

ListViewにsetChoiceModeメソッドを使ってListView.CHOICE_MODE_MULTIPLEを設定すると、複数選択ができるチェックボックスを付けることができます。そして、SimpliCursorAdapterなどによってデータをListViewにバインドさせると、確かにチェックボックス付き…

ListFragmentのサブクラスでリストアイテムを取得する

Android 1.6にSupport Libraryを導入してListFragmentのサブクラスを作成しました。そして、SQLiteのテーブルから取得したデータをリスト表示し、そのリスト項目の一つを選択したときの処理を実装したのですが、なかなか想定通りに動いてくれません。Android…

R.javaが生成されない件の対処方法

「Android Developers」からサンプルコードをダウンロードしてEclipseにインポートしましたが、onCreateメソッドの引数にて以下のエラーが表示されました。「Rを解決できません」どうやらプロジェクト作成時に本来生成されるはずのR.javaが、生成されなかっ…