投稿

9月, 2018の投稿を表示しています

【Android】アノテーション @SharedPref を使う

Androidアプリケーションで設定などの値を保存する際に、アノテーションを利用して簡単に読み書きする方法をまとめてみます。 まずは通常の SharedPreferences クラスを利用する例が以下です。 SharedPreferencesクラスを使った例 // SharedPreferencesクラスを実体化 SharedPreferences preferences = getSharedPreferences("data", Context.MODE_PRIVATE); // IDを読み込み int id = preferences.getInt("id", 0); // IDを書き込み SharedPreferences.Editor editor = preferences.edit(); editor.putInt("id", 123); editor.apply(); これをアノテーション @SharedPref を使って書くと次のようになります。 @SharedPrefを使った例 // ※これはメンバー変数 @Pref static MyPreference_ preference; // IDを読み込み int id = preference.id().get(); // IDを書き込み preference.id().put(123); Editorを作ったり、keyを指定したりしなくていいのでだいぶすっきりします。 保存する設定値が多くなればなるほど、使いやすさが実感できると思います。 ただしこれを利用するにはもちろん前準備が必要になるので説明します。 前準備 ライブラリを追加 app/build.gradle dependencies { … } に以下の2行を追加します。 annotationProcessor "org.androidannotations:androidannotations:+" implementation "org.androidannotations:androidannotations-api:+" SharedPrefインターフェースを作成 以下のようなインタ

【Android】アプリケーションの開発で環境を切り替えてビルドする方法

イメージ
クライアントサーバー型のアプリケーションを開発していると、開発/ステージング/本番でそれぞれビルドを用意しなくてはならないときがあります。 ほとんどの開発現場でこのようなサーバー構成を取っているのではないかと思います。 今回は環境毎に用意されたstring.xmlを読み込む方法をまとめてみました。 環境の切り替え Build Variants 切り替えは Android Studio の左下の Build Variants をクリックします。 すると Build Variants のウィンドウが出ますので、ここで切り替えを行います。 しかし、初期状態では debug と release の二つしかありません。 これはビルドする際のオプションのことで、今回やろうとしている環境ごとのビルドとは関係ありません。 ここに冒頭の「3つの環境」×「オプションの2つ」の計6個の Build Variants を表示する方法が次の手順になります。 Build Variantsの修正 環境を追加 app/build.gradle productFlavors に各環境を定義します。 // フレーバーディメンション flavorDimensions "default" // プロダクトフレーバー productFlavors { develop { applicationId = '[パッケージ名].dev' } staging { applicationId = '[パッケージ名].stg' } product { applicationId = '[パッケージ名]' } } applicationId にはパッケージ名を指定しますが、ここを環境ごとに変えておくことで、一つのデバイスに全てのバージョンをインストールすることが可能になります。 flavorDimensions は productFlavors が複数あるとき優先順位を決めなくてはいけないので一旦 default とし

【Android】Fragmentを使う② - ActivityとFragmentの相互呼び出し -

イメージ
前回 の記事でFragmentの簡単な実装について書きました。今回はそれの応用編です。 Fragmentに定義したメソッドをActvity側から呼び出したり、FragmentからAcitivityのメソッドを呼び出す方法をまとめます。 ActivityからFragmentのメソッドを実行する まずは親レイアウトであるMainActivity側から、それぞれのFragmentに定義してあるメソッドを実行してみます。この場合Fragment側に特別な処理は必要なく、呼び出し元のMainActivityのみで完結します。 メインのレイアウトにボタンを追加する activity_main.xml <LinearLayout android:id="@+id/llButton" android:gravity="center_horizontal" android:orientation="horizontal" android:layout_below="@id/mainText" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/buttonTest1" android:text=" Fragment 1 -> TEST " android:padding="5dp" android:layout_margin="5dp" android:textAllCaps="false" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button