0

在我最近的项目中,我使用 FragmentTabHost 的 v4 支持库。

当 tab 和 fragment 初始化时,绑定到标签的 Fragment 被创建并渲染。它的生命周期是

onCreate ==> onCreateView ==> onActivityCreated

我覆盖了 onActivityCreated 方法,因为我需要从 api 获取一些数据。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Lg.i("on TagDiscoverListFragment activity created");

    new GetDiscoversTask().execute();

}

但是每次我切换到这个选项卡时,这个 aysnTask 都会再次执行,因为当切换发生时,片段调用:

onCreateView ==> onActivityCreated

我不希望数据再次刷新。

当然,我可以扩展 FragmentTabHost 并覆盖方法 doTabChange() 并将片段的附加/分离操作更改为隐藏/查看。

那么,还有其他解决方案吗?

4

1 回答 1

1

您应该在片段中覆盖“onSaveInstanceState(Bundle outState)”并将来自api的数据存储到“outState”中

切换tab时会调用onCreateView,此时可以从“savedInstanceState”(第三个参数)中获取api数据

于 2013-04-09T13:11:01.790 回答