findFragmentByTag()仅ActioBar的第三个选项卡上返回null(findFra

2019-10-28 08:36发布

我使用的是标签式Activity由Android所提供android.support.v7.app.ActionBar.TabListenerViewPagerFragmentPagerAdapter 。 父Activty cointains和管理三个Fragment 。 此外,父活动有一个方法来保存由所述片段所提供的数据。 为了得到他们(而不是由父活动sended)定义的数据,我写了下面的代码:

MyFragment frag = (MyFragment) mSectionsPagerAdapter.getActiveFragment(mViewPager,1,getSupportFragmentManager());

getActiveFragment()

        public Fragment getActiveFragment(ViewPager container, int position, FragmentManager mFragmentManager) {
            String name = makeFragmentName(container.getId(), position);
            return  mFragmentManager.findFragmentByTag(name);
        }


        private String makeFragmentName(int viewId, int index) {
            return "android:switcher:" + viewId + ":" + index;
        }

其实,我有以下问题:当我尝试节省三个片段提供的数据,我有一个java.lang.NullPointerException所造成的第三个片段是空。 出现这种情况只有在我没有我的设备的第二个或第三个片段上显示。 我不明白如何避免和解决这个问题。 任何建议?

Answer 1:

这是由于如果只示出了第一个选项卡/片段没有被创建的第三个片段。 默认将ViewPager内部准备可见片段的人留下来,并在一个合适的吧。 尝试

viewpager.setOffscreenPageLimit(2)



文章来源: findFragmentByTag() returns null only on the third tab of the ActioBar