1

这是我的问题区域:

我有一个片段 A。一旦附加它,在它的 onCreateView 中,我加载一个 Web 服务以从服务器获取数据,然后我使用基本适配器在列表视图上设置该数据。现在,在列表视图的 Item Clicks 上,我使用 Fragment Transactions 的替换方法和 addtoBackstack("FragmentA") 将 Fragment A 替换为 Fragment B。

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

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

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

谢谢

4

1 回答 1

0

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

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

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

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

编辑:

所以例如你可以有

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


 if (data == null) { //Or list is empty?
    getWebData()
 }
}
于 2015-05-03T02:18:48.777 回答