据我了解,如果您将“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 。