繁体   English   中英

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

[英]problem While Sharing text in Android using SharedPreferences

我正在跟踪此链接以使用SharedPreferences.Am尝试在我的应用程序中应用,但是Shared值返回空值

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

                           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值。它不能共享。

您使用了错误的密钥。

得到这样的字符串:

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();

切换此:

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.

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

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

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

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

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

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

现在,您可以选择一个(“ pref”,MODE_WORLD_READABLE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM