【发布时间】:2013-01-21 12:37:47
【问题描述】:
我有一些设置需要在应用程序启动时检索。我首先设计了我的设置页面,保存了设置,然后在主要活动中添加了设置检索代码。该应用程序运行良好。
但如果我清除数据或进行全新安装,则会导致 NullPointerException,我相信这是因为 shared_prefs/settings.xml 根本不存在。
SharedPreferences mSettings;
private String mUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSettings = getSharedPreferences("settings", 0);
mUsername = mSettings.getString("username", null);
// this results a NullPointerException
// but it'll be fine the next time app starts with the fix below
//
// Toast.makeText(this, mUsername, Toast.LENGTH_LONG);
// fix: manually initializing prefs
if(mUsername == null) {
SharedPreferences.Editor editor = mSettings.edit();
editor.putString("username", "Android");
editor.commit();
mUsername = "Android";
}
}
修复解决了问题。但是,我还没有看到有人像我一样进行 pref 初始化。
所以我想知道这是否是初始化首选项的正确方法?
【问题讨论】:
-
看看这个 [post][1] 检查代码再试一次。希望这可以帮助。 [1]:stackoverflow.com/questions/5734721/android-shared-preferences
标签: android nullpointerexception initialization sharedpreferences