如何在Android上避免屏幕方向改变时重新启动活动

70

我正在创建一个Android应用程序,其中我在画布上绘制视图。当设备的方向发生变化时,活动会重新启动,而我不希望它重新启动。

我该如何避免在设备方向发生变化时重新启动活动?

17个回答

1
防止在旋转时破坏活动。
`android:configChanges="keyboardHidden|orientation|screenSize"`

1
在Android中,当设备旋转时,当前活动将被销毁并重新创建以适应新的配置,这可能会导致一些意外行为或问题,例如数据丢失、用户输入重置等。为了防止这种情况发生,您可以使用一些技术来处理旋转并避免活动重新启动。
禁用活动旋转:您可以通过在AndroidManifest.xml文件中的活动中添加android:screenOrientation="portrait"属性来禁用活动旋转。这将强制活动保持纵向模式并防止其旋转。
<activity
    android:name=".MainActivity"
    android:screenOrientation="portrait">

使用 onSaveInstanceState 方法:您可以使用 onSaveInstanceState 方法在因旋转而销毁之前保存活动的状态。该方法在活动被销毁之前调用,并提供一个 bundle 来存储数据。

更多详细信息请参见 此处


这篇文章很可能是由人工智能(例如ChatGPT)完全或部分撰写的。如果您使用了AI工具来协助回答任何问题,我鼓励您将其删除,因为在此处发布AI生成的内容是被禁止的。读者应该仔细、批判性地审查这个答案,因为人工智能生成的信息经常包含基本错误和错误信息。如果您观察到质量问题和/或有理由相信这个答案是由AI生成的,请相应地提供反馈。管理团队可以利用您的帮助来识别问题。 - NotTheDr01ds

0

当我改变夜间模式时,只需在清单中编写以下内容:

android:configChanges="uiMode"

0
只需在清单文件中为所有应用程序活动添加android:configChanges="keyboardHidden|orientation|screenSize"即可。

0

如果您使用“TextView”字段输出答案,则在方向更改时会重置。

请注意,“EditText”字段不会在方向更改时重置,无需额外的代码。

但是,“android:inputType =“none””不起作用。 “android:editable =“false””可以工作,但已被弃用。

我正在使用最新版本的Android Studio(Bumblebee)


0
如果您在Android Studio Bumblebee中的Android清单文件中使用此代码: 当您更改方向时,您需要额外的代码来避免上述代码破坏您的布局。但是,它会保留您选择的文本输入字段中的文本/数字。

0
将此代码放置在 AndroidManifest.xml 文件下方。
<activity android:name=".MainActivity"android:configChanges="orientation|screenSize">

请告知我它是否有效(对我有效,我是 Android Studio 的新手)我在网上看到了这段代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接