我试图实现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,例如在方向更改后。
答案 0 :(得分:2)
新秀错误在我身边。忘了在super()
中拨打onSaveInstanceState()
。