当我从选项卡更改时,如何保留片段的状态

时间:2015-02-16 20:02:58

标签: android android-asynctask fragment savestate

最近我创建了一个执行异步任务的应用程序,我的应用程序有一个包含滑动标签的工具栏,当我将标签从第一个标签更改为第二个标签时,我的异步任务一遍又一遍地执行,怎么能我避免那样?,我怎样才能保存片段的状态?我试图使用

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if(savedInstaceState!=null){
       //TODO
    }

}

1 个答案:

答案 0 :(得分:0)

你是正确的,你必须使用保存实例状态..在你的情况下你可以将数据存储到单个类或主活动中的静态属性,然后在你的片段中创建一个全局布尔isDataLoaded,在真正有价值的情况下,你不执行任务。保存变量的状态就是这样做:

 @Override
public void onSaveInstanceState(Bundle outState) {


    outState.putBoolean("LOADDATA", isDataLoaded);

    super.onSaveInstanceState(outState);

}

然后在你的createView:

 if(savedInstanceState != null){
        isDataLoaded = savedInstanceState.getBoolean("LOADDATA");
    }