Где проверить изменение ориентации в андроидном фрагменте
В моем приложении у меня есть 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 !!!");
}
}