Fragment のインスタンス生成に失敗する
ここに書いてある方法でを参考にして Fragment を使用していたんです。。
http://www.swingingblue.net/mt/archives/003373.html
(追記 本記事で触れた不具合自体は、上記のサイトとは関係ありません)
「ぉぉ、うまく動いてる〜! たのし〜!」と喜んでたんですが、しばらくすると Fragment のサブクラスのインスタンス生成に失敗したとの例外が。。
とっても恥ずかしいミスなのですが、 Fragment のサブクラスには public なデフォルトコンストラクタが必要なんですね〜
http://developer.android.com/reference/android/app/Fragment.html もちろんドキュメントにはちゃんと書いてありました(*;ω;*)
発覚までに時間がかかったのは↓こんな理由でした。
- Fragment をプログラム的に new していた(http://developer.android.com/guide/topics/fundamentals/fragments.html#Adding に書いてある方法です)
- Activity と Fragment が Stop 中に解放されていた(と思う。。)
- 解放された Activity の復元時、 Fragment は Android によって暗黙的にインスタンス化される(http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState この処理の時です)
- 3の処理で public なデフォルトコンストラクタが使用される、、が、存在せずに例外発生(*;ω;*)
この開放と復元処理はスクリーンの向きを縦横切り替えることでも発生するので、テストするときはこの方法がお手軽でした。
5/29 追記
本記事で触れた不具合自体は、上記のサイトとは関係なく、私の作成したプログラムの不具合です。
誤解を招く表現で申し訳ないです。。