繁体   English   中英

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

[英]Restoring a Fragment State when returned after clicking Backpressed of another fragment

这是我的问题所在:

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

FragmentManager fm =getActivity().getFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, Fragment B).commit();

现在在这里,当我按片段B上的后退按钮时,它将带我到片段A,但Web服务再次开始加载。

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

谢谢

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

我相信,如果您只希望Web服务加载一次,则可以将代码移至“ onCreate”方法,但是将代码移至“ onResume”并包含一些检查您是否在运行的逻辑可能是一个更好的主意。是否需要再次加载您的Web服务。

这样,每次暂停片段然后再次加载时,您都可以确保片段仍然具有所需的一切。

片段生命周期
(来源: xamarin.com

编辑:

例如,您可能有

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM