基本的にリストビューであるフラグメントがあります。親アクティビティは、サービスから名簿アイテムのリストを取得するメソッドを呼び出します。データがサービスから返されるとき、通過するフラグメントとRosterアイテムのArrayListでupdateRosterItemsを呼び出します。問題は、最初から機能することですが、別のタブを選択してからフラグメントのあるタブに戻ると、getActivity()がnullを返し、データをArrayAdapterに接続できません。
これは、updateRosterItems関数のコードです。
public void updateRosterList(ArrayList<RosterInfo> rosterItems)
{
if(_adapter == null)
{
_adapter = new RosterItemAdapter(getActivity(), R.layout.roster_listview_item, rosterItems);
}
Activity activity = getActivity();
if(activity != null)
{
ListView list = (ListView)activity.findViewById(R.id.lstRosterItems);
list.setAdapter(_adapter);
_adapter.notifyDataSetChanged();
}
}
フラグメントが添付される前にコードが呼び出されることによって引き起こされる同様の問題について読みました。私の質問は、onAttachが呼び出されるまでupdateRosterListへの呼び出しを遅らせる方法はありますか?私が試している解決策は、getActivity()がnullを返した場合、データをフラグメントのプライベート変数に格納し、onAttachメソッドでvarialbeにデータがあるかどうかを確認してから、アダプターで更新を呼び出すことです。しかし、これは少しハッキーなようです。何か案は?