onConfigurationChanged не вызывается после возврата из действия с другими настройками ориентации экрана

#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. Что вы имеете в виду? Опубликованный вами код не имеет никакого эффекта.