2012年7月18日水曜日

[fragment][android]FragmentにFragmentをXMLからinflateする事はできない

はまりました。
Fragment内でFragmentを定義したレイアウトXMLをinflateしようとしたのですが、下記のような例外が発生。

java.lang.IllegalArgumentException: Binary XML file line #67: Duplicate id 0x7f050008, tag null, or parent id 0x0 with another fragment for HistoryListFragment

原因が良く分からなかったのでグーグル先生に聞いてみると以下のスレッドを発見。


Fragments within Fragments


どうやら去年の時点ではFragment内にFragmentを配置することはサポートされていないようです。そんな使い方は推奨しないということでしょうか。

なんでそんな事をしたかというと、ViewPager内にFragmentPagerAdapterを使ってListFragmentを表示していたのですが、固定ヘッダが表示したくなったんですよね。

元のListFragmentをいじりたくなかったので、固定ヘッダとListFragmentを持つFragmentを作って、そのFragmentをFragmentPagerAdapterに渡すようにしました。
その結果、上記例外発生となりました。

ListFragmentを普通のFragmentに置き換えるしかないんですかねー。面倒だ。

0 件のコメント:

コメントを投稿