簡體   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