片段在ViewPager

时间:2015-06-08 09:11:05

标签: android android-viewpager fragment android-framelayout

我有一个带有传统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相关联)有以下元素:&#34; 1&#34; &#34; 2&#34; &#34; 3&#34; &#34; 4&#34; &#34; 5&#34; &#34; 6&#34; &#34; 7&#34;

因此默认位置在元素&#34; 4&#34 ;;它完美地运作。现在如果我滑动到#34; 3&#34;,片段1(或片段2并不重要)不会出现。要显示它,我必须再次刷卡(所以到#34; 2&#34;),然后再回到&#34; 3&#34;并且片段正确显示。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

Fragment.getChildFragmentManager()

中使用addFragment()