findFragmentByTag返回null

时间:2015-03-12 12:47:00

标签: android android-asynctask fragment

我试图实现DatabaseTaskManager,目的是管理一些AsyncTasks。

在我的第一次研究中,我发现this并试图将其应用于我的应用程序。

所以这就是我所做的:

DatabaseActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_database); 

    FragmentManager fm = getSupportFragmentManager();
    taskManager = (DatabaseTaskManager) fm.findFragmentByTag("DatabaseTaskManager");

    if(taskManager == null){
        taskManager = new DatabaseTaskManager();
        fm.beginTransaction().add(taskManager, "DatabaseTaskManager").commit();
    }else{
        reinitializeUI();
    }
}

DatabaseTaskManager.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mCallbacks = (DatabaseTaskCallbacks)activity;
}

@Override
public void onDetach() {
    super.onDetach();
    mCallbacks = null;
}

但是findFragmentByTag在重新创建活动后总是返回null,例如在方向更改后。

1 个答案:

答案 0 :(得分:2)

新秀错误在我身边。忘了在super()中拨打onSaveInstanceState()