Hatena::ブログ(Diary)

りぬの勉強ログ Twitter

2011-05-12

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 追記

本記事で触れた不具合自体は、上記のサイトとは関係なく、私の作成したプログラムの不具合です。

誤解を招く表現で申し訳ないです。。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rinu/20110512/1305215542
リンク元