Где проверить изменение ориентации в андроидном фрагменте

В моем приложении у меня есть FragmentActivity с несколькими Fragment в портретном режиме, за исключением одного конкретного Fragment. Я перемещаюсь между Fragment через нижний колонтитул View в FragmentActivity.

У меня есть другой макет (на самом деле у него одно и то же имя, но с другим виджетами View s) для этого конкретного Fragment при изменении ориентации. Когда в ландшафтном режиме я хочу удалить определенные виджеты из макета Fragment View и нижнего колонтитула View FragmentActivity, а когда вернусь на портрете, добавьте все обратно.

Я сохранил все данные, которые мне нужны в onSavedInstanceState() в Fragment, но где лучше всего я должен проверить изменение ориентации, чтобы я мог правильно восстановить View?

Не уверен, что могу переопределить onConfigurationChange() и протестировать там в моем Fragment, потому что у меня нет android: configChanges = "orientation" в моем android Manifest.

Ответ 1

Сохраните эту проверку в onCreate(). При повороте устройства приложение перезапускается. Поэтому onCreate вызывается снова, когда приложение перезагружается.

int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
   // Landscape
}
else {
   // Portrait  
}

Ответ 2

Вы можете управлять изменением ориентации путем переопределения функции onConfigurationChanged вашего фрагмента.

    @Override
    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);
        int currentOrientation = getResources().getConfiguration().orientation;

        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
           Log.v("TAG","Landscape !!!");
        }
        else { 
           Log.v("TAG","Portrait !!!");
       }
   }