gpt4 book ai didi

android - 旋转Android上的 Activity 重启

转载 作者:IT老高 更新时间:2023-10-28 12:48:07 27 4
gpt4 key购买 nike

在我的 Android 应用程序中,当我旋转设备(滑出键盘)时,我的 Activity 会重新启动(调用 onCreate)。现在,这可能就是它应该的样子,但是我在 onCreate 方法中做了很多初始设置,所以我需要:

  1. 将所有初始设置放在另一个函数中,这样它就不会在设备旋转时全部丢失或
  2. 使 onCreate 不再被调用,布局只是调整或
  3. 将应用限制为仅纵向,以便不调用 onCreate

最佳答案

使用应用程序类

根据您在初始化中所做的事情,您可以考虑创建一个扩展 Application 的新类,并将您的初始化代码移动到该类中重写的 onCreate 方法中.

public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}

应用程序类中的onCreate仅在整个应用程序创建时被调用,因此Activity在方向重启或键盘可见性变化时不会触发它。

最好将此类的实例公开为单例,并使用 getter 和 setter 公开您正在初始化的应用程序变量。

注意:您需要在 list 中指定新应用程序类的名称才能注册和使用它:

<application
android:name="com.you.yourapp.MyApplicationClass"

对配置更改使用react [更新:自 API 13 起已弃用; see the recommended alternative ]

作为另一种选择,您可以让应用程序监听可能导致重启的事件(例如方向和键盘可见性更改)并在您的 Activity 中处理它们。

首先将 android:configChanges 节点添加到 Activity 的 list 节点

 <activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">

或用于 Android 3.2 (API level 13) and newer :

<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">

然后在 Activity 中重写 onConfigurationChanged 方法并调用 setContentView 以强制在新方向上重新完成 GUI 布局。

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}

关于android - 旋转Android上的 Activity 重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com