2013-03-09 74 views
0

在我最近的项目中,我使用v4支持库作为FragmentTabHost。fragmenttabhost重新创建标签时切换

当选项卡和片段初始化时,创建并呈现绑定到该标记的片段。它的生命周期

的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操作以隐藏/查看。

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

回答

1

你应该重写“的onSaveInstanceState(包outState)”在您的片段 和存储数据,从API到“outState”

当标签切换时,onCreateView将被调用,在这一点上,你可以检索来自“savedInstanceState”的api数据(第三个参数)