2012-03-23 144 views
0

我正在使用Android 2.1 sdk,並且我正試圖將用戶登錄會話保存到共享首選項,事情是在將值保存到共享首選項之後,我無法對其進行修改。在這裏,我粘貼了用於保存並從SharedPrefrence中獲取值的代碼。共享首選項的問題

public void setValue(String name, String value, String prefName) { 
    sharedPref = mContext.getSharedPreferences(prefName, Context.MODE_PRIVATE); 
    sharedPref.edit().putString(name, value); 
    sharedPref.edit().commit(); 
} 


public String getValue(String name, String prefName) { 
    String value = null; 
    sharedPref = mContext.getSharedPreferences(prefName, Context.MODE_PRIVATE); 
    value = sharedPref.getString(name, value); 
    return value; 
} 

我錯過了這段代碼中的一些東西,在保存和檢索值時我沒有檢索到任何異常。謝謝你的幫助。

回答

3

每次致電edit()時,都會返回一個新的Editor實例。所以你得到一個實例,做一個改變,並讓它獨立。然後你得到第二個,並且沒有改變地提交,這導致偏好沒有值改變。

相反鏈在commit()

sharedPref.edit().putString(name, value).commit(); 

或者與一個特定的實例分解成多行:

Editor e = sharedPref.edit(); 
e.putString(name, value); 
e.commit(); 
0
private SharedPreferences myPrefs; 
    myPrefs = Actionactivity.this.getSharedPreferences("myPrefs", MODE_WORLD_WRITEABLE); 
    SharedPreferences.Editor prefsEditor = myPrefs.edit(); 
    prefsEditor.putString("Mobile_no", getText_no.getText().toString().trim()); 
    prefsEditor.commit(); 


myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
    myPrefs.getString("Mobile_no", ""); 

試試這個代碼工作