【问题标题】:How to avoid my activity from restarting when I go back to main menu?返回主菜单时如何避免我的活动重新启动?
【发布时间】:2014-07-10 03:10:58
【问题描述】:

我是 android 的新程序员。最近我一直在用 Android studio 做一个项目。 在我的应用程序中,我正在使用两个切换按钮为用户创建一个包含两个选项的活动。

用户可以选择按钮是发出声音还是振动。

切换按钮工作正常,但是当用户返回主活动并再次进入选项时,切换按钮不会保存用户选择的设置。

例子:

  1. (转到选项)/在选项中用户选择声音/关闭和振动/关闭
  2. 返回(主要活动)
  3. (再次转到选项)设置重新启动声音/开启和振动/开启

希望有人能帮我解决这个问题!

【问题讨论】:

  • 请向我们展示您的尝试。
  • 你必须保存这些值。如需使用 SharedPreferences,请参阅 AcidBurn 的回答

标签: android eclipse android-activity


【解决方案1】:

Android 具有持久化 Activity(或 Fragment)状态的工具。

如果您的 Activity 被置于后台,它可能会在某个时候被销毁并且您无法控制它。这就是 Android 使用 Bundles 的原因。将您的数据存储在捆绑包中,然后将其读回

onCreate(Bundle savedInstanceState)

因此,在您的活动因任何原因终止之前,请存储重要值:

protected void onSaveInstanceState(Bundle bundle) {
    bundle.putInt(SOME_IMPORTANT_INT,mMyInt);
    bundle.putString(SOME_IMPORTANT_STRING,mMyString);
}

创建活动时,我们必须读取包中的内容(如果有的话):

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState != null) {
        mMyInt = savedInstanceState.getInt(SOME_IMPORTANT_INT);
        mMyString = savedInstanceState.getString(SOME_IMPORTANT_STRING);
    }
}

简而言之,您的活动 mMyIntmMyString 值将恢复。

我们可能对何时重新启动活动有一点控制。这是由 AndroidManifest 文件中的 android:configChanges 属性完成的:

<activity
    android:name=".ui.login.LoginActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多