0

这个应用程序需要纵向和横向。在这里,我在资源文件夹中为横向创建“layout-land”文件夹。当我进行定向活动时,正在从“layout-land”获取 XML,但活动正在重新启动。

因此,为了避免重新启动,在清单中我使用以下权限:

<android:configChanges="keyboardHidden|orientation|screenSize">

虽然我使用上述权限活动没有重新启动,但它无法从“layout-land”文件夹中获取 XML。

这里我需要:
1. 避免重新启动活动
2. 制作活动以从“layout-land”文件夹中获取 XML。我是android的新手。请在这方面帮助我。在此先感谢。

4

3 回答 3

2

这就是安卓的工作方式。您需要选择以下三个选项之一:

  1. 纵向和横向使用完全相同的布局;然后,您可以configChanges像上面一样使用。即使您确实进行了一些小的更改,如果您可以保持大部分布局相同并且仅根据方向使一些项目可见/不可见,这也可以工作。

  2. 使用不同的布局;然后,您可以保留configChanges,但您必须自己实现新布局的加载onConfigurationChanged,包括从旧视图中获取所有值并将它们添加到新视图中(在运行时设置的任何内容:文本值,用户输入的编辑文本,复选框状态等)。

  3. configChange从清单中删除该行,并实施onSaveInstanceStateand onRestoreInstanceState。这两个将使您有机会保存所需的任何值并在重新启动活动时恢复它们。基本上和两个一样,但你不必手动重置视图。

如果可能的话,我强烈建议 1。如果您必须使用特定于景观的布局,则使用路线 3 是最简单的。我通常是设置 configChanges 的忠实拥护者,但如果您需要完全不同的横向布局,它就不能很好地工作。

于 2013-04-06T08:12:40.717 回答
0

尝试使用以下内容。

   <uses-sdk android:targetSdkVersion="15"/>
<activity android:configChanges="orientation|screenSize|keyboardHidden" />

在运行 Android 4.0.4 的 Galaxy Nexus 上切换方向时,我的活动没有重新启动。

于 2013-04-06T08:20:56.860 回答
0

在你的 android 清单中使用这个

android:configChanges="orientation|screenSize|keyboardHidden"

如果你想要未指定

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
于 2013-04-06T08:26:48.873 回答