gpt4 book ai didi

java - Android:如何在 Activity A中保存sharedPreferences并在 Activity B中访问它

转载 作者:行者123 更新时间:2023-11-30 01:36:39 24 4
gpt4 key购买 nike

我看到之前有人问过这个问题,但是所提供的答案都不适合我。

所以,我有两个 Activity :A 和 B。用户在 A 中插入一些数据,我希望能够从 B 访问它们(以及 future 的更多 Activity )。我正在尝试使用共享首选项来做到这一点。现在看来我的代码能够正确保存 Activity A 中的数据,但是我无法从 Activity B 访问相同的 sharedPreference,因为对象(在 Activity B 中)为空。看起来它创建了另一个同名对象。

我是 android 和 java 的新手,所以我知道可能只是我不理解这个类是如何工作的,我做错了什么?

Activity A

SharedPreferences sharedPref = this.getSharedPreferences("PREF_PERSONAL_DATA",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();

editor.putInt(getString(R.string.n),n);
editor.putInt(getString(R.string.hi), hi);
editor.putInt(getString(R.string.wa), wa);
editor.putInt(getString(R.string.he), he);
editor.putInt(getString(R.string.we), we);
editor.putInt(BlocksNumStr, BlocksNum);
editor.commit();

Activity B

SharedPreferences sharedPref = this.getSharedPreferences("PREF_PERSONAL_DATA", Context.MODE_PRIVATE);

String Weight = sharedPref.getString("we", null);
int W = sharedPref.getInt("weight", 0);

TextView ShowWeight = (TextView) findViewById(R.id.attempt);
ShowWeight.setText(Weight);
TextView ShowW = (TextView) findViewById(R.id.attemptW);
ShowW.setText(W);

最佳答案

Android 提供了 3 种访问 SharedPreferences 的方式:

  1. Activity.getPreferences() - 访问特定于 Activity 的首选项。这仅对您的情况下的 ActivityA 或 ActivityB 有效。
  2. Activity.getSharedPreferences()Context.getSharedPreferences 当不在 Activity 中时 - 访问应用程序级首选项。这些首选项在您的应用程序中随处可见。
    1. PreferenceManager.getDefaultSharedPreferences() - 访问对安装在 Android 上的每个应用程序可见的全局共享首选项。

从您发布的示例来看,一切似乎都是正确的,因为您使用了 getSharedPreferences()。我要检查的内容是:

  1. 确保是否使用来自资源的相同 String 键来检索首选项。
  2. 检查 commit() 方法是否不会中断写入批首选项。就个人而言,我在使用 commit() 方法时遇到了一些偏好没有被存储的问题。在 Android Honeycomb 中有一个 apply() 方法。 commit()apply() 之间的区别是 commit() 保存你在任何线程上的首选项,而 apply () 异步工作。如果您不依赖于 Honeycomb 之前的版本,请考虑使用 apply()

关于java - Android:如何在 Activity A中保存sharedPreferences并在 Activity B中访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35022526/

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