在我最近的项目中,我使用了FragmentTabHost的v4支持库。
当tab和fragment init时,创建并呈现绑定到标记的片段。它的生命周期是
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()并更改片段的Attach / Detach操作以隐藏/查看。
那么,还有其他解决方案吗?
答案 0 :(得分:1)
您应该在片段中覆盖“onSaveInstanceState(Bundle outState)” 并将数据从api存储到“outState”
当切换选项卡时,将调用onCreateView,此时,您可以从“savedInstanceState”(第三个参数)中检索api数据