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为您提供的偏好设置可供您设置偏好设置。这将是最常见,最优雅的方式。