据我了解,如果您将“android:configChanges =“orientation””插入 list 中的 Activity 中,则该 Activity 不会被破坏,也不会在方向更改时重新创建。为了测试这一点,我创建了一个简简单单的应用程序,它没有任何功能。然后,我在 list 中插入了“android:configChanges =“orientation”“。然后我添加了以下方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    Log.v(TAG,"onConfigurationChanged:");
    super.onConfigurationChanged(newConfig);
}

但是,我仍然看到onCreate()被调用。该 Activity 仍在重新创建。

好像还不够奇怪,当我将模拟器置于横向模式(Ctrl-F11)时,我看不到onConfigurationChanged()被调用。只有当我回到人像模式时才调用它。难道不是两种方式都可以吗?进入横向和纵向模式时,配置(方向)是否有所改变?这是没有道理的。

无论如何,这整个 Activity 和方向决定使我发疯。

最佳答案



该仿真器可模拟带有侧滑键盘的设备。与您的-相匹配的android:configChanges值为keyboardHidden,通常与orientation结合使用以处理非键盘设备(例如android:configChanges="keyboardHidden|orientation")。

话虽如此,在大多数情况下不建议使用android:configChanges。使用动态 fragment 和setRetainInstance(true),或使用onSaveInstanceState()onRetainNonConfigurationInstance()允许销毁并重新创建 Activity 。

10-07 18:16