繁体   English   中英

android防止更改方向刷新

[英]android prevent refresh on change orientation

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

我尝试使用这个代码android:configChanges="keyboardHidden|orientation"它的工作活动不是重新加载我喜欢但问题是布局没有从layout/activity_main.xml切换到layout-land/activity_main.xml

我如何从layout/activity_main.xml切换到layout-land/activity_main.xml 没有刷新活动。

通过声明android:configChanges="orientation|screenSize"您可以指示Activity Manager不重新启动您的活动,并让您通过onConfigurationChanged()处理配置更改。

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

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

这意味着onCreate()将在配置更改时被跳过,并且您无法交换布局(因为onCreate()是重新创建视图的位置)。

在你的情况下,你想要改变布局,所以别无选择,只能刷新你的活动,这意味着删除android:configChanges="orientation|screenSize" 如果要保持状态,可以保存并检查传递给onCreate()Bundle以相应地恢复状态。

@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
}

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

试试这个:

android:configChanges="orientation|screenSize"

在您的< activity >标记中的Android Manifest中限制重新加载活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM