Android - Fragment inside a Fragment inside a ViewPager 问题
Android - Fragment inside a Fragment inside a ViewPager problems
在我的应用程序中,我有一个可以旋转 4 个片段的视图寻呼机。其中一些碎片内部还有其他碎片。 Viewpager 第一次启动 Fragment 它工作正常,但如果我旋转并 return 到前一个片段,内部片段无法显示(我注意到其中的 getActivity() returns无效的)。
例如,应用程序启动,我在 viewpager 中移动并查看所有主要片段,它们看起来很好,然后我向后滚动,每个具有内部片段的主要片段都没有正确显示。
我的 ViewPager 使用 "FragmentStatePagerAdapter",代码如下(例如变量名)。
私有 class ContentPagerAdapter 扩展了 FragmentStatePagerAdapter {
public ContentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public Fragment getItem(int pos) {
Fragment fragment = null;
try {
if (pos == POS1) {
if (fragment1 == null) {
fragment1 = Fragment1.newInstance();
}
fragment = fragment1;
} else if (pos == POS2) {
if (fragment2 == null) {
fragment2 = Fragment2.newInstance(something);
}
fragment = fragment2;
} else if (pos == POS3) {
if ( fragment3 == null ) {
fragment3 = Fragment3.newInstance(something3);
}
fragment = fragment3;
} else { //default
if (fragment4 == null) {
fragment4 = Fragment4.newInstance(something4);
}
fragment = fragment4;
}
}catch (Exception e) {
Log.e(AppConstants.APP_TAG, "Cannot create fragment", e);
finish();
}
return fragment;
}
@Override
public int getCount() {
int count = 4;
return count;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
实例化 PagerAdapter
时,使用 getChildFragmentManager()
而不是 getFragmentManager()
。如果需要更多信息,类似的问题已在此处解决 ViewPager in TabFragment not loading second time
在我的应用程序中,我有一个可以旋转 4 个片段的视图寻呼机。其中一些碎片内部还有其他碎片。 Viewpager 第一次启动 Fragment 它工作正常,但如果我旋转并 return 到前一个片段,内部片段无法显示(我注意到其中的 getActivity() returns无效的)。
例如,应用程序启动,我在 viewpager 中移动并查看所有主要片段,它们看起来很好,然后我向后滚动,每个具有内部片段的主要片段都没有正确显示。
我的 ViewPager 使用 "FragmentStatePagerAdapter",代码如下(例如变量名)。
私有 class ContentPagerAdapter 扩展了 FragmentStatePagerAdapter {
public ContentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public Fragment getItem(int pos) {
Fragment fragment = null;
try {
if (pos == POS1) {
if (fragment1 == null) {
fragment1 = Fragment1.newInstance();
}
fragment = fragment1;
} else if (pos == POS2) {
if (fragment2 == null) {
fragment2 = Fragment2.newInstance(something);
}
fragment = fragment2;
} else if (pos == POS3) {
if ( fragment3 == null ) {
fragment3 = Fragment3.newInstance(something3);
}
fragment = fragment3;
} else { //default
if (fragment4 == null) {
fragment4 = Fragment4.newInstance(something4);
}
fragment = fragment4;
}
}catch (Exception e) {
Log.e(AppConstants.APP_TAG, "Cannot create fragment", e);
finish();
}
return fragment;
}
@Override
public int getCount() {
int count = 4;
return count;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
实例化 PagerAdapter
时,使用 getChildFragmentManager()
而不是 getFragmentManager()
。如果需要更多信息,类似的问题已在此处解决 ViewPager in TabFragment not loading second time