在MainActivity.java中我写了
SharedPreferences pref = getApplicationContext().getSharedPreferences("My_Pref" , 0);
然后我创建编辑器的对象以将数据放入其中
Editor edit = pref.edit();
然后我把数据
edit.putString("1","Hello");
edit.commit(); / edit.apply();
在Second.java中,我得到了偏好:
SharedPreferences pref = getPreferences(0);
然后我尝试接收像
这样的数据pref.getString("1",null);
并将其设置为textview文本。但这不起作用。
另外,如何正确访问其他java类中的Preferences和editor?我无法理解这个概念。
答案 0 :(得分:0)
获取您的活动背景
Context shrdContext= ActivityClass.getContextOfApplication();
现在传递上下文以在另一个类中获取您的共享首选项
SharedPreferences myPrefs= PreferenceManager.getDefaultSharedPreferences(shrdContext);
答案 1 :(得分:0)
试试这种方式
public void saveToSharedPrefrence(Context context, String word) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sharedPreferences.edit();
if (sharedPreferences.contains("history")) {
preExistRemove(word, context);
} else {
editor.putString("history", word.trim());
editor.commit();
}
}
查看this了解详情
答案 2 :(得分:0)
您正在写入和阅读不同的偏好文件。使用相同的文件,它应该工作。
要获取SharedPreferences
的实例,请执行以下操作:
1)在活动MainActivity
中:
SharedPreferences pref =
getApplicationContext().getSharedPreferences("My_Pref" , 0);
2)在活动Second
中:
SharedPreferences pref =
getPreferences(0);
第一个表单打开首选项文件" My_Pref",第二个表单打开一个以您的活动类命名的文件,即:" Second"。所以他们在不同的文件中阅读和写作。
我总是使用此表单打开首选项文件:
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(this);
答案 3 :(得分:0)
您有3种方法可以访问Android应用程序的首选项。
你使用的第一个是
SharedPreferences pref = getApplicationContext().getSharedPreferences("My_Pref" , 0);
是第一个。通过此,您可以读取和写入自定义命名的共享首选项文件。在您的情况下,您的文件名称将是 My_Pref 。
如果您希望具有不同的首选项不同域,则此选项非常有用,因为它允许您使用不同的名称创建许多共享首选项。 (例如:时区偏好,用户偏好)。
第二个getPreferences(int)
允许访问活动的首选项,并且与调用它的活动紧密绑定。创建的文件使用活动名称命名。在您的情况下第二。
第三种方法PreferenceManager.getDefaultSharedPreferences(Context)
创建一个共享首选项文件,就像第一种方法一样,但这次使用您的应用程序包名称命名该文件。如果您打算只有一个共享首选项文件,这是使用共享首选项的最佳方法。
在您的初始问题中,您在一个文件中编写了一个数据并尝试读取其他文件,这会导致错误。这就是Rob Meeuwisse写道你必须使用PreferenceManager.getDefaultSharedPreferences(Context)