我有一个主要的Activity
,其中包含一个带有4个选项卡的ViewPager
。每个选项卡内部都有一个fragment
。我在主Activity
上实现了ActionBar.TabListener
。在 OnTabSelected
方法中,我对所选 fragment
调用自定义 fragment.refresh
方法,以便刷新和更新 fragment
来自服务器。 refresh
方法重置数据。
当我关闭应用程序并在一段时间后重新打开它时,我在从 OnCreateView
返回的主视图上收到 NullPointerException
的 fragment
。
我的问题是:调用 OnDestroyView
后如何保留 fragment 的主视图?或者,如何确保在调用
? (我应该使用带有 while 循环的标志吗?OnCreateView
后调用刷新
最佳答案
您可以尝试将自定义fragment.refresh()放入fragment.onResume()中。这样,在向用户显示 fragment 之前,将自动调用刷新。
如果您确实想仅在用户单击选项卡时更新 fragment ,您可以执行类似的操作:
refresh(){
if(getActivity()!=null && !isDetached()){ // check if fragment is visible
refreshData(); // refresh data
}else{
needRefresh=true; // set flag for refresh
}
}
和
onCreate(...){
...
if(needRefresh){
needRefresh = false;
refreshData();
}
}
我认为你应该采用第一个解决方案,因为我担心第二个解决方案可能并不完美。
关于java - 调用 OnDestroyView 后从 OnCreateView 保留 Fragment 的主视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966608/