Android - 未初始化SharedPreferences时的NullPointerException

时间:2013-01-21 12:37:48

标签: android nullpointerexception initialization sharedpreferences

我需要在应用程序启动时检索一些设置。我首先设计了我的设置页面,保存了设置,然后在主要活动中添加了设置检索代码。该应用程序工作正常。

但是如果我清除数据或进行全新安装,会导致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初始化。

所以我想知道这是否是初始化偏好的正确方法?

1 个答案:

答案 0 :(得分:0)

为什么不使用“Android”作为默认值?

mUsername = mSettings.getString("username", "Android");