0

我有 ActivityA 和 ActivityB。ActivityB 是从 ActivityA 调用的。

当我按下 ActionBar 的后退按钮或设备的后退按钮时,我想保留 ActivityA 的对象。

我创建了一个 Singleton 对象来保存我的对象并获取我的对象。

onPause() 我正在保存对象,而 onResume() 方法我正在获取对象。

我的问题是行为不同,我在 Action 的后退按钮(在 ActivityB 中)得到的对象与我在点击后退按钮的后退按钮时得到的对象不同。

这是代码:

protected void onPause() {
    //resetSort();
    super.onPause();
    MySingleton.getInstance().setMyObject(myObject);
}

@Override
protected void onResume() {
    super.onResume();
    myObject = MySingleton.getInstance().getMyObject();
}

这是我的清单文件。

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

来自 ActivityB 的代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}

任何解决方案表示赞赏。谢谢

4

1 回答 1

1

最可靠的方法是使用SharedPreferences。即使您的应用程序被终止,它也是线程安全的并且仍然存在。

如果您还没有机会查看Google 的存储选项指南,也绝对值得一看。

要保存字符串,您将使用:

String str = "abc";
getSharedPreferences("filename", Context.MODE_PRIVATE).edit().putString("String Name", str).commit();

然后检索它:

String str = getSharedPreferences("filename", Context.MODE_PRIVATE).getString("String Name", "default string")
于 2013-09-05T04:53:04.160 回答