我的主要活动中有一些标签,每个标签都是一个片段。
现在,在某个片段中,我做了类似的事情:
public class MyFragment extends Fragment{
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
... initialization
DownloadTask dvt = new DownloadTask();
dvt.execute(new Void[]{});
dvt = null;
}
下载任务填充了listview。现在,每次我从这个标签中来回反复调用任务,但它不应该因为onCreated应该在片段创建时被调用。我想第一次调用此任务,然后使用填充的listview保存片段。 我检查过,我发现onDestroy没有被调用......所以发生了什么?
答案 0 :(得分:2)
正如Fragment文档中所述,如果您在setRetainInstance(true)
上致电Fragment
,
onAttach(Activity)和onActivityCreated(Bundle)仍将被调用
因此,将setRetainInstance()
调用和AsyncTask
起始代码放入Fragment
的{{1}}以实现所需的行为。希望这会有所帮助。