フラグメントが表示されない
Android で、Activity のレイアウト内で指定した ListFragment が表示されない現象が発生。本来フラグメントが表示されるはずの領域が、処理中のまま何も表示されない。
なにか単純なミスだと思うんだけど。
※解決
ListFragment に ListAdapter を設定する時、
getListView().setAdapter(adapter);
のように、内部の ListView に直接アダプタを設定していた事が原因だった。以下のように、ListFragment#setListAdapter を使用すれば正常に動作する。
setListAdapter(adapter);
Android のソース(ListFragment.java)を見ると、setListAdapter は内部の ListView にアダプタを設定(mList.setAdapter)するだけでなく、 mAdapter というフィールドにアダプタを記録・保持している。従って、直接 ListView にアダプタを登録しただけでは正常に機能しない。
ちょっとハマッてしまった。
リファレンスにちゃんと書いてあった(^^;
You must use ListFragment.setListAdapter()
to associate the list with an adapter. Do not directly call ListView.setAdapter()
or else important initialization will be skipped.