親測成功解決方案:
View mView ;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(mView != null){
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
}
return mView;
}
mView=
inflater.inflate(R.layout.XXXXX, container,
false) ;
。。。。。。。
}
來源: <http://www.eoeandroid.com/thread-315619-1-1.html>
網友提供的方案一:
http://www.cnblogs.com/dancefire/archive/2013/01/02/why-notifyDataSetChanged-does-not-work.html
@Override
public Fragment getItem(int position) {
MyFragment f = new MyFragment();
return f;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
MyFragment f = (MyFragment) super.instantiateItem(container, position);
String title = mList.get(position);
f.setTitle(title);
return f;
}
@Override
public int getItemPosition(Object object) {
return PagerAdapter.POSITION_NONE;
}
網友提供的方案二 :
我的是一個fragment界面裏面嵌套了一個viewpager,viewpager裏面放的兩個fragment的適配器,第一次執行時都正常顯示,第二次執行時viewpager顯示數據爲空?
解決方案:
調試打印logo顯示viewpager適配器的getItem()方法沒有執行,原因是fragment裏面又嵌套了fragment,所以在創建viewpager的適配器的時候傳參爲getChildFragmentManager()而不是getFragmentManager(),因爲如果傳參爲getFragmentManager()則表示將父Fragment的FragmentManager傳給了子Fragment,所以無法顯示數據
來源: <http://www.th7.cn/Program/Android/201406/218498.shtml>
此方案出現 no Activity 等異常。應該是我使用的條件和樓主不一致所以記錄下方便借鑑
解決no Activity 異常方案 但之後又出現了java.lang.IllegalStateException: Activity has been destroyed;
public
void onDetach() {
super.onDetach();
try {
//參數是固定寫法
Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}*