2011-09-20 37 views
0

在Android的分享文字,我在此之後link使用SharedPreferences.Am想在我的應用申請,而是共享的值返回空值問題在使用SharedPreferences

這裏我的代碼要分配共享變量

      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值。它無法共享。

回答

0

您正在使用錯誤的密鑰。

GET字符串是這樣的:

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

好去處....需要具有相同名稱的SharedPreferences – Justin

+0

上午更改爲SharedPreferences,再次返回null值Sir – new

+0

我已編輯代碼.....請檢查... –

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. 
+0

先生我聲明prefName爲字符串,所以我不能傳遞整數到字符串 – new

0

偏好的名字是 「你好」,而不是 「ImagePath的」。

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

而且我認爲最好使用getString("hello", "")。這樣,prefName將永遠不會是null

+0

我認爲「你好」是「imagepath」鍵的值?所以他需要切換他的.putString語句。 – Justin

+0

從他使用'putString'的方式判斷,「hello」是鍵值和「imagepath」的值。 –

0

你已經寫了 「myPrefs」 在(SharedPreferences myPrefs = this.getSharedPreferences( 「myPrefs」,MODE_WORLD_READABLE);)

更改像這樣(SharedPreferences myPrefs = this.getSharedPreferences( 「期望」,MODE_WORLD_READABLE); )

這裏我已經將「myPrefs」(「myPrefs」,MODE_WORLD_READABLE)改爲「pref」。

現在你coorect一個是( 「期望」,MODE_WORLD_READABLE)

+0

+1 ya謝謝我明白了 – new

+0

如果它對您有幫助,請點擊箭頭標記 – kehnar