投稿

11月, 2015の投稿を表示しています

[Qiita] FragmentのonAttach(Context context)が呼ばれない

※この記事は以前Qiitaに投稿されていた古い記事ですはじめにFragmentのonAttach(Context context)メソッドを使うときに、少しハマったのでメモ。onAttach(Activity activity)とonAttach(Context context)API Level 23より前では、onAttach(Activity activity)を使っていたのですが、このメソッドはAPI Level 23で非推奨になりました。
これの代わりにonAttach(Context context)というメソッドが登場したので、API Level 23以上ではこれを使うことになります。Support LibraryのFragmentの場合android.support.v4.app.Fragmentを継承しているFragmentの場合、onAttach(Context context)が実装されているので、以下のようにOverrideしても問題無く呼ばれます。@OverridepublicvoidonAttach(Context context){super.onAttach(context);}普通のFragmentの場合Support LibraryのFragmentで普通に使えていたので、同じようにandroid.preference.PreferenceFragmentでonAttach(Context context)をOverrideしたら、Android 6.0未満の端末では残念ながら呼ばれませんでした。
onAttach(Context context)はAPI Level 23で新しく実装されたメソッドなので当然ですね。
PreferenceFragmentがSupport LibraryのFragmentを継承しているものではないことを忘れていたので、少し悩んでしまいました。結論、普通のFragmentの場合は
Android 6.0以上だと、どっちも呼ばれますが、onAttach(Context context)onAttach(Activity activity)Android 6.0未満だと以前のonAttachしか呼ばれませんでした。onAttach(Activity activity)なので、こんな感じで実装しておきまし…

[Qiita] AndroidのGoogle Analytics SDKをv2からv4に移行する

※この記事は以前Qiitaに投稿されていた古い記事ですはじめに今自分が触っているアプリのAndroidのGoogle Analytics SDKをv2からv4に上げることにしたのですが、v2とv4ではパッケージ名も使い方も違っていて少し調べる必要があったので、移行したときに何を変更したのかメモとして書いておきます。
まぁ、v2はかなり古いSDKなので、未だにこれを使っている人はあんまりいないとは思いますが。。古いjarを消し去る今まで使っていたGoogle Analytics SDK v2のjarは不要なので、最初に消し去ります。アプリのbuild.gradleにGoogle Play Servicesを追記Google Analytics SDKはGoogle Play Servicesの中に入っているので、build.gradleにGoogle Play Servicesを追記します。
Google Play Servicesのバージョンは、なるべく最新のものを使ったほうが良いと思います。compile 'com.google.android.gms:play-services:8.3.0' importするコードを書けばAndroid Studioが自動でimportしてくれるとは思いますが、一応書いておきます。
v2とv4でパッケージ名が変わってました。import com.google.analytics.tracking.android.GoogleAnalytics;import com.google.analytics.tracking.android.Tracker;import com.google.android.gms.analytics.GoogleAnalytics;import com.google.android.gms.analytics.HitBuilders;import com.google.android.gms.analytics.Tracker;インスタンスの取得インスタンスの取得はgetTrackerをnewTrackerに変えるだけです。Tracker mTracker = GoogleAnalytics.getInstance(context).getTracker(TRACKER_ID);Tra…

[Qiita] AppCompatのAlertDialogのテーマカラーを変える

イメージ
※この記事は以前Qiitaに投稿されていた古い記事ですはじめにAndroid Supoprt Library 22.1で公開されたandroid.support.v7.app.AlertDialogを使うと、Material Designなダイアログを簡単に実装することができますが、そのダイアログのタイトルの文字色やダイアログの背景色を変えるにはどうすれば良いのか、メモとして書いておきます。style.xmlでカラーを定義<stylename="MyAlertDialogStyle"parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">@android:color/holo_blue_dark</item> <item name="android:background">@android:color/white</item> <item name="android:textColorPrimary">@android:color/holo_blue_light</item> </style>nameどこの色colorAccentボタンの文字色とかandroid:backgroundダイアログの背景色android:textColorPrimaryタイトル、メッセージの文字色AlertDialog.BuilderでStyleをセットするAlertDialog.Builder builder =newAlertDialog.Builder(this, R.style.MyAlertDialogStyle); builder.setTitle("確認"); builder.setMessage("ほんとにいいの?"); builder.setPositiveButton("はい",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(Di…