java - 调用 OnDestroyView 后从 OnCreateView 保留 Fragment 的主视图

标签 java android android-fragments nullpointerexception fragment

我有一个主要的Activity,其中包含一个带有4个选项卡的ViewPager。每个选项卡内部都有一个fragment。我在主Activity 上实现了ActionBar.TabListener。在 OnTabSelected 方法中,我对所选 fragment 调用自定义 fragment.refresh 方法,以便刷新和更新 fragment 来自服务器。 refresh 方法重置数据。

当我关闭应用程序并在一段时间后重新打开它时,我在从 OnCreateView 返回的主视图上收到 NullPointerException fragment

我的问题是:调用 OnDestroyView 后如何保留 fragment 的主视图?或者,如何确保在调用 OnCreateView 后调用刷新? (我应该使用带有 while 循环的标志吗?

最佳答案

您可以尝试将自定义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/

相关文章:

android如何使用xmpp-smack在群聊中发送和接收图像和位置(使用 map )

android - 了解 fragment Activity 生命周期

Android ActionBar 始终为空

java - Ant 可以同时启动两个 java 应用程序吗?

java - 如何提前停止处理 JSP?

java - Android 应用程序在模拟器和设备上不断崩溃

android - 我怎么知道短信发送被权限检查阻止了?

java - 为什么在不先通过复制构造函数复制实例的情况下保存实例不是一个好主意?

android - RelativeLayout 背景图像未填充其布局

android - 按后退按钮返回 Fragments