我有一个基本上是列表视图的片段。父活动调用一个方法来从服务中检索花名册项目列表。当数据从服务返回时,我在通过的片段和名册项目的 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();
}
}
我已经阅读过在附加片段之前调用代码引起的类似问题。我想我的问题是,有没有办法延迟对 updateRosterList 的调用,直到调用 onAttach 之后?我正在玩弄的解决方案是,如果 getActivity() 返回 null 然后将数据存储在片段中的私有变量中,并在 onAttach 方法中检查变量中是否有数据,然后在适配器上调用更新。不过,这似乎有点 hacky。有任何想法吗?