#android #screen-orientation #onconfigurationchanged
#Android #ориентация экрана #onconfigurationchanged
Вопрос:
У меня есть два действия:
<activity
android:name=".ui.MainActivity"
android:configChanges="orientation|screenSize" />
<activity
android:name=".ui.DetailActivity"
android:screenOrientation="landscape" />
На некоторых устройствах / эмуляторах у меня возникает странная ошибка: когда я возвращаюсь от DetailActivity к MainActivity, устройство больше не будет вызывать onConfigurationChanged
, пока я не нажму на пункт OptionsMenu. После того, как я нажал OptionsMenu, он работает нормально. Однако открыть OptionsMenu программно не работает.
Более запутанным является то, что это происходит только на нескольких устройствах или эмуляторах с разными версиями Android.
Ответ №1:
Я нашел обходной путь, в MainActivity я вызываю requestedOrientation
с небольшой задержкой.
override fun onResume() {
super.onResume()
Handler().postDelayed(Runnable {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
}, 500)
}
Ответ №2:
Вы вызывали этот код?
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
}
Комментарии:
1. Нет, я не перезаписывал эти методы-
2. Я не говорю о переопределении этих методов, я говорю, что вы написали эти методы в своем классе??
3. Нет, это не обязательно, если я их не перезапишу.
4. но необходимо их определить.
5. Что вы имеете в виду? Опубликованный вами код не имеет никакого эффекта.