访问其他Java类中的SharedReference和Editor对象
我在MainActivity.java中编写访问其他Java类中的SharedReference和Editor对象,java,android,sharedpreferences,Java,Android,Sharedpreferences,我在MainActivity.java中编写 SharedPreferences pref = getApplicationContext().getSharedPreferences("My_Pref" , 0); 然后我创建编辑器的对象,将数据放入其中 Editor edit = pref.edit(); 然后我把数据 edit.putString("1","Hello"); edit.commit(); / edit.apply(); 在Second.java中,我得到了首选项: S
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);
并将其设置为文本视图的文本。但这是行不通的
另外,如何正确访问其他java类中的首选项和编辑器?我无法理解这个概念。了解您活动的背景
Context shrdContext= ActivityClass.getContextOfApplication();
现在传递上下文以获取另一个类中的共享首选项
SharedPreferences myPrefs= PreferenceManager.getDefaultSharedPreferences(shrdContext);
这样试试
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();
}
}
查看更多详细信息您正在写入和读取不同的首选项文件。使用相同的文件,它应该可以工作 要获取SharedReferences的实例,请执行以下操作: 1在活动main活动中: 2在activitySecond中: 第一个表单打开首选项文件My_Pref,第二个表单打开以活动类命名的文件,即:second。所以他们在不同的文件中读写 我总是使用此表单打开首选项文件:
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(this);
您有3种方式可以访问Android应用程序的首选项 你用的第一个是 SharedReferences pref=getApplicationContext.GetSharedReferencesMy_pref,0;这是第一个。使用此选项,您可以读取和写入自定义命名的共享首选项文件。在您的情况下,您的文件名将是My_Pref。 如果您想拥有不同的首选项-不同的域,此选项非常有用,因为它允许您使用不同的名称创建许多共享首选项。例如:时区首选项,用户首选项 第二个getPreferencesint允许访问活动的首选项,并与调用它的活动紧密绑定。创建的文件使用活动名称命名。在你的情况下,第二 第三个方法PreferenceManager.GetDefaultSharedReferencesContext与第一个方法一样创建一个共享首选项文件,但这次该文件使用应用程序包名称命名。如果您只想拥有一个共享首选项文件,这是使用共享首选项的最佳方法 在最初的问题中,您在一个文件中写入了数据,并试图在另一个文件中读取数据,这导致了一个错误。这就是为什么像Rob Meeuwisse write一样,您必须使用PreferenceManager。GetDefaultSharedPreferenceContext您需要上下文来访问其他java类中的preferences对象。将上下文(例如,您的活动)作为参数传递,并使用它在任何地方检索共享的首选项。
SharedPreferences pref =
getPreferences(0);
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(this);