1

Существует много вопросов, связанных с проблемой, когда DialogFragment исчезает при вращении устройства. Но у меня противоположная. Мне нужно повернуть устройство, чтобы появилось диалоговое окно.DialogFragment исчез после возвращения из другой активности

Я использую android-support-v4.jar lib.

У меня есть MainActivity (android.support.v4.app.FragmentActivity) с AccountsFragment (android.support.v4.app.Fragment). Через пункт меню пользовательские триггеры отображают SettingsDialogFragment (android.support.v4.app.DialogFragment).

SettingsDialogFragment показан изнутри MainActivity с помощью:

android.support.v4.app.DialogFragment.show(FragmentManager manager, String tag) 

FragmentManageer заводится форма MainActivity с помощью:

android.support.v4.app.FragmentActivity.getSupportFragmentManager() 

Пользователь нажимает кнопку на SettingsDialogFragment, что триггерами показывает PasslockSetupActivity (android.support.v4.app.FragmentActivity). Пользователь заканчивает настройкой блокировки прохода, мы вызываем PasslockSetupActivity.finish().

Ожидаемый результат: пользователь должен увидеть SettingsDialogFragment над MainActivity с помощью AccountsFragment. Фактический результат: пользователь видит MainActivity с AccountsFragment

наблюдения (не диалог!): Опции для разработчиков включен

  • Если «Не держите acvitivies» на устройстве, то он работает, как ожидалось.
  • Если пользователь поворачивает устройство, появится диалоговое окно!

В обоих наблюдениях указано, что если система повторно создает MainActivity, она успешно восстанавливает диалог.

Кроме того, я воспроизвожу только на Android 4.2.1/4.2.2. Другие версии выглядят нормально.

Неужели кто-нибудь столкнулся с такой проблемой? Есть идеи?

UPDATE:

Просто понял, что я могу воспроизвести проблему даже без запуска другой деятельности! Этого достаточно, чтобы нажать кнопку «Главная», чтобы приложение перешло на задний план, а затем выберите приложение из списка последних приложений, поэтому оно появляется на переднем плане. Диалог исчез. Но если я вращаю устройство, появится диалоговое окно.

ответ

1

Решение от DialogFragment displayed from onContextItemSelected doesn't survive onPause/onResume помогло мне.

new Handler().postDelayed(new Runnable() { 
    public void run() { 
     showMyDialogFragment(); 
    } 
}, 300); 

Однако 300 мс не было надежным для меня, поэтому я использовал 500 мс.

Похоже, что имеется официальная эмиссия для этого - https://code.google.com/p/android/issues/detail?id=41901

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