前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

onActivityResultの呼ばれるタイミングとFragmentについて

課題

Fragment.onCreateViewでViewを生成しているが、onActivityResult内でそのViewを使用しようとした際にエラーになるケースがある。

原因

通常Fragment.onActivityResultはActivity.onStart前に実行され、それまでにはFragment.onCreateViewは既に実行されているため問題とはならないが、 呼び出し元のActivityが破棄されていた場合、Fragment.onActivityResultが呼ばれた後でFragment.onCreateViewが実行される。 そのためViewは取得できずにFragment.onActivityResult内で使おうとするとエラーになる。

対応

onActivityResult内でViewへのアクセスを止める。Fragmentのプロパティとして状態変数を持ち、その値を変更しておく。 onCreateView実行後にその値を元に表示を切り替える。