DialogFragment使用時に画面の回転で例外発生(InstantiationException)
DialogFragment を private なインナークラスで定義してたら、
画面の回転(Activity再生成) でアプリが落ちてしまった。
出力された例外はこれ。
Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment ErrorCaseDialogFragment: make sure class name exists, is public, and has an empty constructor that is public
Fragment が private なインナークラスなので、
外部からコンストラクタ呼び出せなくて例外になった様子。
使用したコードはこんなかんじ。
ErrorCaseDialogFragment のクラス定義を
private static ErrorCaseDialogFragment ↓ public static ErrorCaseDialogFragment
こう修正したら普通に動くけども。
こうするくらいならFragmentを外部ファイルにした方がいいですよねw
というわけで。
結論
Activity再生成時に自動生成するFragmentは、
空のpublicコンストラクタが外部から呼び出せるように、
privateなインナークラスではなく publicなクラス にする。