Я просто пытаюсь сохранить диалог по ориентации на Android, который, как я думал, будет простым. Но это не работает, как я думал. У меня есть простой класс членов моего Activity
под названием StartMonitoringDialogFragment
, который распространяется на DialogFragment
. В моей деятельности я показываю это как:Android DialogFragment не сохраняется при изменении ориентации
StartMonitoringDialogFragment dialog = new StartMonitoringDialogFragment();
dialog.show(getFragmentManager(), getClass().getName() + "StartDialog");
Однако диалог не появляется при изменении ориентации. Я заметил, что фрагменты onCreateView правильно вызываются после изменения ориентации и правильно создают и возвращают его представление (переменные экземпляра фрагмента все еще установлены), однако ничего не отображается. Разве это не должно отображаться? мне нужно отслеживать его вручную?
Редактировать Я попытался решить эту проблему путем добавления
Fragment dialog;
if(savedInstanceState != null && (dialog = getFragmentManager().findFragmentByTag(getClass().getName() + "StartDialog")) != null) {
((DialogFragment)dialog).show(getFragmentManager(), getClass().getName() + "StartDialog");
}
к моей деятельности onCreate(Bundle savedInstanceState)
метод, и он изначально, казалось, работал, однако сейчас я постоянно сталкивается исключение java.lang.IllegalStateException: Fragment already added
. Любые идеи, что делать?