Android ==>首选项?
问题描述:
我的应用程序在下面的代码中发生空指针异常崩溃。 我有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;
}
}
答
偏好文件不表格中存储项目的/res/xml/defaults.xml
它们存储在设备上的应用程序文件夹类似
/data/data/com.your.pkg/default.prefs
尽量不指定文件名,你将有一些问题与偏好文件,像这样OP有here
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(context);
那么你可能要查询
preferences.getString('weightPref', null);
答
下面是一个示例代码显示了如何保存和检索首选项。我在这里保存了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);
希望它可以帮助..
答
设置在共享偏好值:
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"
。
答
您的首选项应该延伸PreferenceActivity。然后,你需要创建一个在您PreferenceActivity的喜好资源的XML文件,并说明像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
etc.
}
偏好XML应该有一个PreferenceScreen作为最高级别的元素,你可以把所有的不同的优势Android为您提供的偏好设置可供您设置偏好设置。这将是最常见,最优雅的方式。
谢谢,我做你建议,我仍然得到一个nullPointerException。 我上面发布了我的完整代码,您是否看到问题? 谢谢 – aryaxt 2010-06-19 15:24:30