解決Android開發中ViewPager動態設定PagerAdapter時第二次進入Fragment內容不顯示的問題
阿新 • • 發佈:2018-12-30
問題描述
筆者最近的Android專案要用到PagerSlidingTabStrip和ViewPager的組合,但是從github上下載原始碼後順利執行示例專案,用到自己的專案後發現一個問題,就是第二次進入該ViewPager所在Fragment後PagerSlidingTabStrip載入正常,但是ViewPager不顯示內容,為一片空白。於是追蹤程式碼,發現ViewPager的子Fragment的onCreatView方法未被呼叫,於是懷疑在替ViewPager設定Adapter的環節出了問題。
以下是我第一次的Adapter程式碼
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "外賣訂單", "快遞訂單" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return OrderListFragment.newInstance(position);
}
}
經過各種搜尋後發現繼承的Adapter不對,將FragmentPagerAdapter改為FragmentStatePagerAdapter後第二次進入就能正常載入Fragment內容了。
之後的程式碼
public class MyPagerAdapter extends FragmentStatePagerAdapter {
private final String[] TITLES = { "外賣訂單", "快遞訂單" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return OrderListFragment.newInstance(position);
}
}
筆者也是第一次用ViewPager,對於機制什麼的也不太熟悉,希望能幫到也出現這個問題的人。