skimemo


skimemo - 日記/2013-08-18/Google Play Service Availableチェックではまる の変更点


#blog2navi()
*Google Play Service Availableチェックではまる [#b4484767]

Google Playを利用したアプリの作成時は、端末を初期化した状態でのテストも欠かせません。Google Playが初めての利用だったり、そもそもGoogle Playが入っていない(Android 2.2でもandroidマーケットを更新しないとplayにならないものがある、私の使ってるGalaxy S SC-02Bとか・・)場合があるからです。~
~
そんな確認をしていて、[[isGooglePlayServicesAvailable():http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable%28android.content.Context%29]]の実装の必要性に気づき、色々お世話になっている以下のページを参考に実装しました。~
[[http://dev.classmethod.jp/smartphone/android/android-google-play-services-2/:http://dev.classmethod.jp/smartphone/android/android-google-play-services-2/]]~
~
当初、例を参考に、
#code(java){{
// ErrorDialog の表示
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, REQUEST);
if (dialog != null) {
	ErrorDialogFragment frag = new ErrorDialogFragment();
	frag.setDialog(dialog);
	frag.show(getSupportFragmentManager(), "error_dialog_fragment");
}
}}
という感じで実装し、Dialog用のActivityを作ったり、それだと真っ黒な画面が出てしまうのでDialogがDismissされたらCallbackでActivityもfinish()したりと、いろいろやったのですが、ダイアログ表示中に画面を回転させるとNullPointerExceptionが発生してしまう現象がどうしても解決できませんでした。~
~
どうやら原因は、以下のサイトにあるように、回転時にDialogFragmentが再生される際、Activityからの生成ではなく直接onCreateDialogが呼ばれてしまい、返り値を作れなくて落ちるという現象でした。~
[[http://y-anz-m.blogspot.jp/2012/04/androidfragment-setarguments.html:http://y-anz-m.blogspot.jp/2012/04/androidfragment-setarguments.html]]~
~
そこで、[[このあたり:http://www.techmaru.net/wordpress/20101121/onsavelistview/]]を参考にしながら、Serializeで値を保存する方策を探ってみたのですが、Dialog型のSerializeが分からずに断念(そもそも無理?)。~
~
違う方面からのアプローチを探していたら、[[こちら:http://wptrafficanalyzer.in/blog/retain-markers-on-screen-rotation-in-google-maps-android-api-v2-using-parcelable-latlng-points/]]のサイトで良い方法を見つけました。~
それはなんと、以下のように、
#code(java){{
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, REQUEST);
dialog.show();
}};
getErrorDialog()した後、DialogFragmentを使わずに''そのままdialog.show();''してしまうというもの。~
なんだ、これでいいんだ・・・脱力。
----
#htmlinsert(20130818_datsuryoku.html)
----


RIGHT:Category: [[[android>日記/Category/android]]] - 16:45:19
----
~
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()

}}