0

我的應用程序在下面的代碼中發生空指針異常崩潰。 我有res/xml/defaults.xml下的xml首選項文件 任何想法爲什麼它崩潰?Android ==>首選項?

public class Preference extends Activity { 
    public Preference() 
    { 
    } 

    public String getPreference(String key) 
    { 
       //it still crashes here 
     SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext()); 
     String result = settings.getString(key, null); 
     return result; 
    } 
} 

回答

2

偏好文件表格中存儲項目的/res/xml/defaults.xml

它們存儲在設備上的應用程序文件夾類似

/data/data/com.your.pkg/default.prefs 

儘量不指定文件名,你將有一些問題與偏好文件,像這樣OP有here

SharedPreferences preferences = PreferenceManager 
        .getDefaultSharedPreferences(context); 

那麼你可能要查詢

preferences.getString('weightPref', null); 
+0

謝謝,我做你建議,我仍然得到一個nullPointerException。 我上面發佈了我的完整代碼,您是否看到問題? 謝謝 – aryaxt 2010-06-19 15:24:30

0

下面是一個示例代碼顯示瞭如何保存和檢索首選項。我在這裏保存了SharedPreferences中的用戶名和密碼。

SharedPreferences uPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
SharedPreferences.Editor editor; = uPreferences.edit(); //Instantiating editor object 


protected void storeSharedPrefs(String username, String password) { 
     /* 
     * Storing in Shared Preferences 
     */ 
     editor.putString("username", username); 
     editor.putString("password", password);  
     editor.commit(); //Commiting changes 
    } 

從SharedPreferences的另一個活動中檢索用戶名和密碼。

private SharedPreferences mSP; 
    mSP = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
      String username = mSP.getString("username", null); 
      String password = mSP.getString("password", null); 

希望它可以幫助..

0

設置在共享偏好值:

Editor prefs = getSharedPreferences("Application_name", MODE_PRIVATE).edit(); 
prefs.putString("key", accountKey); 
prefs.commit(); 

從其他活動獲取值:

String accountKey = 
    this.getSharedPreferences("Application_name", MODE_PRIVATE). 
    getString("key", null); 

這將是很好的,如果您通過使用某些預定義的處理程序(如getString(R.string._key))而不是硬編碼來訪問該變量字符串"key"

0

您的首選項應該延伸PreferenceActivity。然後,你需要創建一個在您PreferenceActivity的喜好資源的XML文件,並說明像這樣:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preferences); 
      etc. 
    } 

偏好XML應該有一個PreferenceScreen作爲最高級別的元素,你可以把所有的不同的優勢Android爲您提供的偏好設置可供您設置偏好設置。這將是最常見,最優雅的方式。