亲测成功解决方案:
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);
}
}
}*