访问其他Java类中的SharedPreference和Editor对象

时间:2014-11-21 12:41:15

标签: 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中,我得到了偏好:

SharedPreferences pref = getPreferences(0);

然后我尝试接收像

这样的数据
pref.getString("1",null);

并将其设置为textview文本。但这不起作用。

另外,如何正确访问其他java类中的Preferences和editor?我无法理解这个概念。

4 个答案:

答案 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)

的原因