我正在使用FragbarTabsPager和Actionbar Sherlock。当标签发生变化时,我需要通知相应的ListFragment,用新的列表内容重绘自己。
鉴于我引用的代码(ABS version of FragmentTabsPager),它的设置如下。顶级活动:
public class MyActivity extends SherlockFragmentActivity {
public static class TabsAdapter extends FragmentPagerAdapter {
public void onTabSelected(Tab tab, FragmentTransaction ft) {
int selectedTab =
mContext.getSupportActionBar().getSelectedNavigationIndex();
mViewPager.setCurrentItem(selectedTab);
MyListActivity.MyListFragment.resetDisplayItems(selectedTab);
}
}
}
管理显示项目列表的一方是:
public class MyListActivity extends SherlockFragmentActivity {
public static class MyListFragment extends SherlockListFragment {
public void resetDisplayItems(int selectedTab) {
// rebuild dispItems ...
MyItemAdapter adapter =
new MyItemAdapter(getActivity(), R.layout.my_list, dispItems);
setListAdapter(adapter);
}
}
}
由于MyListFragment是静态的,因此resetDisplayItems调用发出错误:“无法从类型MyListActivity.MyListFragment”对静态方法resetDisplayItems(int)进行静态引用。
我无法使调用方非静态,因为这会破坏我正在使用的FragmentTabsPager实现。我不能使resetDisplayItems静态,因为必要的适配器调用不是静态的。
任何想法如何打破僵局?感谢。