1
在我的應用程序中,我有一個View pager,它可以旋轉4個片段。其中一些片段內部還有其他片段。第一次Viewpager啓動一個Fragment時它可以正常工作,但如果我旋轉並返回到前一個片段,則內部片段無法顯示(並且我注意到它們中的getActivity()返回null)。Android - ViewPager中片段內的片段問題
例如,應用程序啓動,我通過viewpager移動並查看所有主要片段,並且它們顯示正常,然後向後滾動,每個具有內部片段的主要片段都不能正確顯示。
我對我的ViewPager使用「FragmentStatePagerAdapter」,代碼如下(變量名稱是例如)。
私有類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;
}
}
我認爲這可能與'FragmentStatePagerAdapter'處理未使用片段的方式有關。它銷燬片段並將其從「FragmentManager」中移除。嘗試使用'FragmentPagerAdapter'來代替它,看看它是如何發展的。 – jammaster
我還發現,如果你真的想保持資源友好的'FragmentStatePagerAdapter',它似乎可以幫助你。 http://stackoverflow.com/questions/16960676/viewpager-in-tabfragment-not-loading-second-time – jammaster
我試過FragmentPagerAdapter,它似乎有幫助,但只有一點。只是一對夫婦的片段工作,一些沒有和幾輪後,即使這些消失 – Panos