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に置き換えるしかないんですかねー。面倒だ。

2012年7月5日木曜日

[Android][Fragment][Loader][ArrayAdapter]ListFragmentにLoaderを使ってArrayAdapterからリストを表示する

ListFragmentにデータを表示する際、単純にリストのデータを表示したい場合は、ArrayAdapterを使って表示すると思いますが、データが大量にある場合にはやっぱりバックグラウンドでやるべきですよね。

最近はバックグラウンドでの読み込みはLoaderを使ってやるのが良いみたいなのでLoaderを使ってみました。