当我回到主菜单时,如何避免我的活动重启?

时间:2014-07-10 03:10:58

标签: android eclipse android-activity

我是android中的新编程。最近我一直在用Android工作室做一个项目。 在我的应用程序中,我正在为具有两个切换按钮的用户创建一个带有两个选项的活动。

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

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

示例:

  1. (转到选项)/在选项中,用户选择声音/关闭&振动/关闭
  2. 返回(主要活动)
  3. (再次转到选项)重新启动设置声音/打开&振动/打开
  4. 我希望有人可以帮我解决这个问题!

1 个答案:

答案 0 :(得分:0)

Android具有持久存在活动(或片段)状态的功能。

如果您的活动被置于后台,它可能会在某些时候被销毁,而您无法控制它。这就是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);
    }
}

简而言之,您的活动 mMyInt mMyString 值会恢复。

我们可能会对重新启动活动时有一点控制权。这是通过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