【问题标题】:findFragmentByTag() returns null only on the third tab of the ActioBarfindFragmentByTag() 仅在 ActioBar 的第三个选项卡上返回 null
【发布时间】:2014-12-28 21:35:52
【问题描述】:

我正在使用带有android.support.v7.app.ActionBar.TabListener、ViewPager 和FragmentPagerAdapter 的Android 提供的标签式Activity。父 Activty 包含并管理三个 Fragment。此外,父 Activity 有一个方法来保存 Fragment 提供的数据。为了获取其中定义的数据(而不是由父 Activity 发送),我编写了以下代码:

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 由第三个片段导致为空。只有当我没有在我的设备上显示第二个或第三个片段时才会发生这种情况。 我不明白如何避免和解决这种行为。 有什么建议吗?

【问题讨论】:

    标签: android android-fragments android-actionbar android-actionbar-compat android-actionbaractivity


    【解决方案1】:

    这是由于仅显示第一个选项卡/片段时未创建第三个片段。 默认情况下,ViewPager 在内部准备可见片段,一个在它的左边,一个在它的右边。 试试看

    viewpager.setOffscreenPageLimit(2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-22
      • 2018-07-14
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多