Met4licのあけくれ帖

日常とか、勉強したこととかいろいろ書いていくつもりのブログです

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になっていきたいものである。

同じような悩みでわかんないよ~って人の支えになれたらうれしいな。

終わります。