Androidでのつまづき「DialogFragmentのRuntimeException」
お久しぶりです皆さま。
今回は、Androidでアプリを作っている時に躓いた、DialogFragmentについてです。
DialogFragmentとは
API Level 13からActivityでのshowDialog()がdepricatedになったことを受けて、推奨されるようになったDialogの呼び出しに使われるもの。
このDialogFragmentでbuilderを通して生成することでDialogを見せることができる。
何で躓いたか
躓いたのはDialogFragmentの実装を終えて、いざ、Dialog生成!って時に起こった
AndroidRuntimeException
なーんだこれは、あんまり見たことないぞ。エラーメッセージも「requesFeature() must be called before.....」とかでよくわからん。
んで、いろいろ調べてもよくわからず(こういうことはよくある)、過去の経験に従って、きっちり自分と他人のコードを読むことにした。
そうしたらある部分に引っかかった。それがこちら。
public class myDialogFragment extends DialogFragment { /*~略~*/ @Override public void onCreateView(/*ry*/){ /*省略*/ } @Override public Dialog onCreateDialog(Bundle savedInstanceState){ /*省略*/ return builder.create(); } }
お分かりいただけただろうか
ここで自分は「ん"?」と思ったわけです。
「return builder.create();」で生成したDialogを返しているのに、DialogFragmentのLayoutをonCreateViewする必要があるのか…?と。
結果、「onCreateView」を削除したところ、きれいさっぱり、RuntimeExceptionは消え去りましたとさ。めでたしめでたし。
しかし、最近いやに冷静にコードを見直すことができるようになってきた気がする。
まだまだ先輩たちには追い付けないけれども、ぜひとも頑張ってよいDeveloperになっていきたいものである。
同じような悩みでわかんないよ~って人の支えになれたらうれしいな。
終わります。