Android FragmentPagerAdapter:对片段变得可见做出反应

时间:2014-12-30 17:13:30

标签: android

一个Activity使用带有两个Tabs的FragmentPagerAdapter(每个选项卡都有一个片段)。 首先,只有Home片段可见,而Run片段不可见。

tabsPageAdapter = new TabsPagerAdapter(getSupportFragmentManager());
...
viewPager = (ViewPager) findViewById(R.id.pager);
...
viewPager.setAdapter(tabsPageAdapter);

FragmentPagerAdapter看起来有点像这样:

class TabsPagerAdapter extends FragmentPagerAdapter {

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);

    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0: {
            return Fragment.instantiate(MainActivity.this, HomeFragment.class.getName());
        }
        case 1:
            return Fragment.instantiate(MainActivity.this, RunFragment.class.getName());
        }

        return null;
    }

}    

当Home Fragment中的异步任务成功时,它会通知Activity显示Run Fragment。

 viewPager.setCurrentItem(1);

这使RunFragment可见,但它不调用任何生命周期方法:

  • onCreate(有意义,因为之前已经创建过)
  • onResumed

不幸的是,我需要RunFragment中的一些代码才能在此时运行(它之前无法运行,因为它取决于在HomeFragment中运行的代码的副作用。)

我试过了:

  • 使用生命周期方法(似乎没有被调用)
  • 在MainActivity中保留对RunFragment的引用;这不起作用,因为对RunFragment的引用最终会变为“null”(或者它不是null,但它对getActivity()的引用为null)

我该如何攻击?

0 个答案:

没有答案