Android 在单击另一个片段的Backpress后返回时恢复片段状态

Android 在单击另一个片段的Backpress后返回时恢复片段状态,android,android-fragments,onbackpressed,Android,Android Fragments,Onbackpressed,以下是我的问题领域: 我有一个片段a。一旦它被连接,在它的onCreateView中,我加载一个webservice从服务器获取数据,然后我使用基本适配器在列表视图中设置该数据。现在,在列表视图的项目单击上,我使用片段事务和addtoBackstack(“FragmentA”)的替换方法将片段A替换为片段B 现在,当我按下片段B上的后退按钮时,我将进入片段A,但Web服务再次开始加载 我的问题是:我只希望当它返回到片段A时,它应该显示它以前的状态,并且不应该再次调用webservices 感谢O

以下是我的问题领域:

我有一个片段a。一旦它被连接,在它的onCreateView中,我加载一个webservice从服务器获取数据,然后我使用基本适配器在列表视图中设置该数据。现在,在列表视图的项目单击上,我使用片段事务和addtoBackstack(“FragmentA”)的替换方法将片段A替换为片段B

现在,当我按下片段B上的后退按钮时,我将进入片段A,但Web服务再次开始加载

我的问题是:我只希望当它返回到片段A时,它应该显示它以前的状态,并且不应该再次调用webservices


感谢

OnCreateView,因为每次需要绘制视图时,都会在创建视图时运行片段。通过返回,您将导致重新创建视图,从而再次加载Web服务

我相信,如果您只希望web服务加载一次,那么您可以将代码移到“onCreate”方法,但最好将此代码移到“onResume”方法,并包含一些检查是否需要再次加载web服务的逻辑

这样,每次暂停片段并再次加载时,您都可以确保片段仍然拥有它所需要的一切


(来源:)

编辑:

例如,你可以

 @Override
 public void onResume() {
 super.onResume();  // Always call the superclass method first


 if (data == null) { //Or list is empty?
    getWebData()
 }
}

我是否误解了这个问题?示例代码中没有
addToBackStack
 @Override
 public void onResume() {
 super.onResume();  // Always call the superclass method first


 if (data == null) { //Or list is empty?
    getWebData()
 }
}