2015-03-12 4 views
0

Я пытаюсь реализовать команду 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.

+0

Вы вызвали setContentView в onCreate? –

+0

Да, я, наверное, должен был вставить это сюда. Я отредактирую свой вопрос. – Mazen

+0

Убедитесь, что ваш DatabaseTaskManager расширяет класс Fragment из библиотеки поддержки (android.support.v4.app.Fragment), а не файл android.app.Fragment –

ответ

2

Rookie ошибка на моей стороне. Забыл позвонить super() в onSaveInstanceState().

Смежные вопросы