課題
Fragment.onCreateViewでViewを生成しているが、onActivityResult内でそのViewを使用しようとした際にエラーになるケースがある。
原因
通常Fragment.onActivityResultはActivity.onStart前に実行され、それまでにはFragment.onCreateViewは既に実行されているため問題とはならないが、 呼び出し元のActivityが破棄されていた場合、Fragment.onActivityResultが呼ばれた後でFragment.onCreateViewが実行される。 そのためViewは取得できずにFragment.onActivityResult内で使おうとするとエラーになる。
対応
onActivityResult内でViewへのアクセスを止める。Fragmentのプロパティとして状態変数を持ち、その値を変更しておく。 onCreateView実行後にその値を元に表示を切り替える。