Я пытаюсь реализовать команду DatabaseTaskManager
, которая предназначена для управления некоторыми AsyncTasks.findFragmentByTag возвращает null
В моем первом исследовании я нашел 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
всегда возвращает нуль после того, как деятельность была воссоздан, например, после ориентации GE.
Вы вызвали setContentView в onCreate? –
Да, я, наверное, должен был вставить это сюда. Я отредактирую свой вопрос. – Mazen
Убедитесь, что ваш DatabaseTaskManager расширяет класс Fragment из библиотеки поддержки (android.support.v4.app.Fragment), а не файл android.app.Fragment –