Android防止更改方向刷新

Zer*_*_73 2 layout android android-orientation

我有layout/activity_main.xmllayout-land/activity_main.xml。当我改变方向时,活动会重新加载。

我尝试使用此代码android:configChanges="keyboardHidden|orientation",但它无法正常加载我喜欢的活动,但问题是布局没有从切换layout/activity_main.xmllayout-land/activity_main.xml

如何从切换layout/activity_main.xmllayout-land/activity_main.xml。而不刷新活动。

hid*_*dro 5

通过声明android:configChanges="orientation|screenSize"您指示“活动管理器”不要重新启动活动,并让您通过来处理配置更改onConfigurationChanged()

如果您的应用程序在特定的配置更改期间不需要更新资源,并且您有一个性能限制,要求您避免活动重新启动,那么您可以声明您的活动自行处理配置更改,从而阻止系统重新启动您的活动。活动。

来源:http : //developer.android.com/guide/topics/resources/runtime-changes.html

这意味着onCreate()在更改配置后将跳过该操作,并且您不能交换布局(因为这onCreate()是重新创建视图的位置)。

在您的情况下,您想更改布局,因此别无选择,只能刷新您的活动,这意味着删除android:configChanges="orientation|screenSize"。如果要保留状态,则可以保存并检查Bundle传递给您onCreate()的还原状态。

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    // set your layoutId according to landscape/portrait
    setContentView(layoutId);
    if (savedInstanceState != null) {
        // restore your state here
    }
    ...
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // save your state here
}
Run Code Online (Sandbox Code Playgroud)

有关更多参考:http : //developer.android.com/training/basics/activity-lifecycle/recreating.html