Fragment のインスタンス生成に失敗する

ここに書いてある方法を参考にして Fragment を使用していたんです。。
http://www.swingingblue.net/mt/archives/003373.html
(追記 本記事で触れた不具合自体は、上記のサイトとは関係ありません)


「ぉぉ、うまく動いてる〜! たのし〜!」と喜んでたんですが、しばらくすると Fragment のサブクラスのインスタンス生成に失敗したとの例外が。。


とっても恥ずかしいミスなのですが、 Fragment のサブクラスには public なデフォルトコンストラクタが必要なんですね〜
http://developer.android.com/reference/android/app/Fragment.html もちろんドキュメントにはちゃんと書いてありました(*;ω;*)


発覚までに時間がかかったのは↓こんな理由でした。

  1. Fragment をプログラム的に new していた(http://developer.android.com/guide/topics/fundamentals/fragments.html#Adding に書いてある方法です)
  2. Activity と Fragment が Stop 中に解放されていた(と思う。。)
  3. 解放された Activity の復元時、 Fragment は Android によって暗黙的にインスタンス化される(http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState この処理の時です)
  4. 3の処理で public なデフォルトコンストラクタが使用される、、が、存在せずに例外発生(*;ω;*)


この開放と復元処理はスクリーンの向きを縦横切り替えることでも発生するので、テストするときはこの方法がお手軽でした。

5/29 追記

本記事で触れた不具合自体は、上記のサイトとは関係なく、私の作成したプログラムの不具合です。
誤解を招く表現で申し訳ないです。。