无法对非静态方法进行静态引用(Android FragmentTabsPager场景)

时间:2012-06-05 15:37:07

标签: java android android-fragments actionbarsherlock static

我正在使用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静态,因为必要的适配器调用不是静态的。

任何想法如何打破僵局?感谢。

0 个答案:

没有答案