Фрагмент диалога не появляется после поворота устройства - PullRequest
0 голосов
/ 27 января 2020

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

[! [Это то, как диалог выглядит] [1]] [1]

[! [Так я хочу быть] [2]] [2]

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

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

Ответы [ 2 ]

1 голос
/ 27 января 2020

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

Дополнительная ссылка: { ссылка }

0 голосов
/ 28 января 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 =" ориентация ". Хотя это может быть и не решение вашей проблемы, больше кода будет полезно.

...