片段在 ViewPager 中无法正确显示
Fragment doesn't show properly in ViewPager
我有一个带有传统 viewpager 组件的 Activity。此 viewpager 包含 MainFragment class(这是一个标准片段)。这是此片段的布局:
<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: 我需要使用这个框架布局,因为我可以根据用户数据在里面切换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”并且片段正确显示。
感谢大家的帮助!
在 addFragment()
中使用 Fragment.getChildFragmentManager()
。
我有一个带有传统 viewpager 组件的 Activity。此 viewpager 包含 MainFragment class(这是一个标准片段)。这是此片段的布局:
<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: 我需要使用这个框架布局,因为我可以根据用户数据在里面切换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”并且片段正确显示。
感谢大家的帮助!
在 addFragment()
中使用 Fragment.getChildFragmentManager()
。