2014-03-27 40 views
0

我正在使用偏好設置在Nexus 7應用程序中保存一些用戶設置。我的一個值保存到喜好代碼:Android偏好似乎不會在應用程序啓動之間持續

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    String systemId = spinnerActivity.getSelectedItem().toString(); 
    editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId); 
    if (!editor.commit()) { 
     Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show(); 
    } 

我已經通過這個加強與調試器,它被正確調用。當我重啓我的應用程序。並嘗試用下面的代碼讀取值,我總是得到空值。

 SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
    String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null); 
    ConnectionInfo.setSystemId(savedSystemId); 

加載從主活動的onCreate()函數中調用。奇怪的是,在應用程序的其他地方加載了其他偏好值。工作正常,只是這種情況不起作用。任何人都可以看到有什麼不對?

+1

你確定你正在保存你認爲你的價值嗎? – Matthew

+0

是的,我已經非常仔細地在調試器中完成了它,空值永遠不會被保存。我已經步入保存有效值。在重新啓動應用程序。然而,我總是讀回null。 –

回答

1

SharedPreferences sharedPref = getSharedPreferences(「Name_of_item」,Context.MODE_PRIVATE);

+0

使用它來替換代碼的保存部分和代碼的檢索部分。 – Gene

+0

賓果你知道了。我需要調用sharedPreferences而不是Preferences。它使用類名稱作爲第一個參數,當然這在類別之間是不同的。 –

+0

太棒了。幸運猜猜。很高興我能幫上忙 – Gene

0

而不是使用:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 

嘗試使用此:

import android.preference.PreferenceManager; 
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); 

或者,你可以使用一個名爲首選項頁面在這種情況下:

public static final String PREF_FILE_NAME = "PrefFile"; 
SharedPreferences sharedPref = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 
1

請嘗試低於

SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
String systemId = spinnerActivity.getSelectedItem().toString(); 
editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId); 
if (!editor.commit()) { 
    Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show(); 
} 



SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE); 
String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null); 
ConnectionInfo.setSystemId(savedSystemId); 
相關問題