android - fragment 在 ViewPager 中无法正确显示

标签 android android-viewpager fragment android-framelayout

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

<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个 fragment 。

在这个 MainFragment 中,我想根据用户数据显示特定 fragment :

    @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”, fragment 才能正确显示。

谢谢大家的帮助!

最佳答案

addFragment() 中使用 Fragment.getChildFragmentManager()

关于android - fragment 在 ViewPager 中无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705185/

相关文章:

Android - setAdapter ViewPager 上的 NullPointerException

android - onBackPressed() 应用程序未关闭

java - Mapbox OfflineRegionObserver 监听器注销

Android:如何完全禁用 Edittext 中的复制和粘贴功能

android - Android开发中资源ID不匹配

android - 如何使用 ViewPager 显示不同的布局?

Android 应用程序在 3G 慢速连接时崩溃,但在 wifi 上工作正常

java - Fragment 和 ViewPager ClassCastException

java - Sherlock FragmentActivity 无法解析为类型

Android Fragments 不更新