【问题标题】:onConfigurationChanged not called after coming back from an Activity with different screenOrientation Settings从具有不同屏幕方向设置的 Activity 返回后未调用 onConfigurationChanged
【发布时间】:2019-03-07 10:11:18
【问题描述】:

我有两个活动:

<activity
    android:name=".ui.MainActivity"
    android:configChanges="orientation|screenSize" />
<activity
    android:name=".ui.DetailActivity"
    android:screenOrientation="landscape" />

在某些设备/模拟器上,我遇到了一个奇怪的错误:当我从 DetailActivity 返回到 MainActivity 时,设备将不再调用 onConfigurationChanged,直到我单击选项菜单项。单击 OptionsMenu 后,它工作正常。以编程方式打开 OptionsMenu 但不起作用。 更令人困惑的是,它只发生在少数具有不同 Android 版本的设备或模拟器上。

【问题讨论】:

    标签: android screen-orientation onconfigurationchanged


    【解决方案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);
      }
      

      【讨论】:

      • 不,我没有覆盖这些方法-
      • 我不是在说重写这些方法,我是说你在课堂上写过这些方法吗??
      • 不,如果我不覆盖它们就没有必要。
      • 但必须定义它们。
      • 什么意思?您发布的代码无效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多