使用SharedPreferences在Android中共享文本时出现问题

时间:2011-09-20 14:18:46

标签: java android sharedpreferences

我正在关注此link以使用SharedPreferences.Am尝试在我的应用程序中应用但共享值返回空值

这是我的代码分配共享​​变量

                           SharedPreferences sharedPreferences = getSharedPreferences("pref",Activity.MODE_WORLD_READABLE);
                            SharedPreferences.Editor editor= sharedPreferences.edit();
                            String l="hello";
                            editor.putString(l,"imagepath");
                            editor.commit();
  

此处代码可访问共享变量

   SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    String prefName = myPrefs.getString("imagepath",null);
    Toast.makeText(getBaseContext(),"create banner"+prefName,Toast.LENGTH_LONG).show();
  

这里prefName返回null值。它不能共享。

4 个答案:

答案 0 :(得分:0)

你使用了错误的密钥。

得到这样的字符串:

String prefName = myPrefs.getString("hello",null);

您还使用了两个不同的sharedPreference名称:

SharedPreferences sharedPreferences = getSharedPreferences("pref",Activity.MODE_WORLD_READABLE);

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);

请确保您使用相同的SharedPreference撰写和阅读。

您在SharedPreference中编写的代码应如下所示:

SharedPreferences sharedPreferences = getSharedPreferences("pref",0);
SharedPreferences.Editor edito r= sharedPreferences.edit();
String l="hello";
editor.putString(l,"imagepath");
editor.commit();

从SharedPreference中读取内容应如下所示:

SharedPreferences myPrefs = this.getSharedPreferences("pref", 0);
String prefName = myPrefs.getString("hello",null);
Toast.makeText(getBaseContext(),"create banner"+prefName,Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

切换它:

editor.putString("imagepath", l);

您还需要将“null”的可能返回值更改为更可接受的错误返回值,可能为0或-1。

    String prefName = myPrefs.getString("imagepath","0");

来源Android Doc for Editor

abstract SharedPreferences.Editor    putString(String key, String value)
//Set a String value in the preferences editor, to be written back once commit() or apply() are called.

答案 2 :(得分:0)

首选项名称是“hello”,而不是“imagepath”。

String prefName = myPrefs.getString("hello", null);

我认为最好使用getString("hello", "")。这样,prefName永远不会是null

答案 3 :(得分:0)

您已在(SharedPreferences myPrefs = this.getSharedPreferences(“myPrefs”,MODE_WORLD_READABLE)中写过“myPrefs”;)

像这样更改(SharedPreferences myPrefs = this.getSharedPreferences(“pref”,MODE_WORLD_READABLE);)

这里我将(“myPrefs”,MODE_WORLD_READABLE)中的“myPrefs”更改为“pref”。

现在你是coorect one(“pref”,MODE_WORLD_READABLE)