【问题标题】:Fragment doesn't show properly in ViewPager片段在 ViewPager 中无法正确显示
【发布时间】:2015-06-08 09:11:04
【问题描述】:

我有一个带有传统 viewpager 组件的 Activity。这个 viewpager 包含 MainFragment 类(它是一个标准片段)。这是这个片段的布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/fragment_container"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_weight="1">
</FrameLayout>

Ps:我需要使用这个framelayout,因为我可以根据用户数据在里面切换2个片段。

在这个MainFragment中,我想根据用户数据显示一个特定的片段:

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        final Bundle bundle = getArguments();
        int mydata = bundle.getInt(BUNDLE_KEY_MY_DATA);

        if (mydata == 1)
            addFragment(Fragment1.newInstance(), Fragment1.TAG);
        else if (mydata == 2)
            addFragment(Fragment2.newInstance(), Fragment2.TAG);
    }

我的 addFragment 方法:

protected void addFragment(@NonNull Fragment fragment,
                           @NonNull String fragmentTag) {
    getFragmentManager()
            .beginTransaction()
            .add(R.id.fragment_container, fragment, fragmentTag)
            .disallowAddToBackStack()
            .commit();
}

但是在执行过程中有一个奇怪的行为(没有崩溃!)。例如,在我的标签(与 viewpager 关联)中有以下元素:“1”“2”“3”“4”“5”“6”“7”

所以默认位置在元素“4”上;它完美地工作。现在,如果我例如滑动到“3”,则 Fragment1(或 Fragment2 无关紧要)不会出现。为了显示它,我必须再次滑动(所以到“2”),然后回到“3”并且片段正确显示。

感谢你们的帮助!

【问题讨论】:

  • 知道ViewPager 在当前页面和您的用户数据在此预创建发生时已正确设置?

标签: android android-viewpager fragment android-framelayout


【解决方案1】:

在您的addFragment() 中使用Fragment.getChildFragmentManager()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2016-03-02
    相关资源
    最近更新 更多