Фрагмент диалога не появляется после поворота устройства

у меня есть фрагмент диалога, когда я поворачиваю устройство, dialogFragment не появляется.
пожалуйста, посмотрите на изображения, чтобы лучше понять

[![так выглядит диалоговое окно][1]][1]

[![вот каким я хочу быть][2][2]

запуск диалога

ft = activity.supportFragmentManager.beginTransaction()
                //show the fragment
                userDialogFragment.show(ft, "user")

person ismacil jama    schedule 27.01.2020    source источник


Ответы (2)


я думаю, вы пропустили вызов setRetainInstance(true)< /а>. Он определяет, сохраняется ли экземпляр фрагмента при повторном создании Activity (например, при изменении конфигурации). Если установлено, жизненный цикл фрагмента будет немного отличаться при воссоздании действия.

Дополнительная ссылка: https://stackoverflow.com/a/15444485/1992013

person Birender Singh    schedule 27.01.2020
comment
Спасибо, но это не решило мою проблему - person ismacil jama; 27.01.2020
comment
Здесь упоминается ошибка в библиотеке совместимости и возможное исправление. вы можете проверить это (также другие аспекты). exceptionshub.com/ - person Birender Singh; 03.02.2020

Когда я столкнулся с этой проблемой, это было потому, что у меня был чек вроде

if(savedInstance == null{
      do...
}

как в моем фрагменте, так и в основной деятельности. Это мешало моему фрагменту быть повторно прикрепленным. Поэтому я удалил проверку в своей активности фрагмента. Я также вручную управлял вращением с помощью приведенного ниже кода (что позволило мне поддерживать два фрагмента в альбомной ориентации и один в портретной ориентации).

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
        if (Orientation.equals("L")){return;}
        setContentView(R.layout.activity_land);
        Orientation = "L";
    }

    else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
        if (Orientation.equals("P")){return;}
        setContentView(R.layout.activity_main);
        Orientation = "P";
    }
}

Наряду с «android: configChanges = «ориентация». Хотя это может не быть решением вашей проблемы, было бы полезно больше кода.

person ShadowRz    schedule 28.01.2020
comment
не понял куда ставить код ConfigurationChanged - person ismacil jama; 28.01.2020
comment
Вы можете поместить код onConfigurationChanged в любом месте основного класса активности, который не находится в функции. - person ShadowRz; 29.01.2020