アプリケーションの起動時にいくつかの設定を取得する必要があります。最初に設定ページを設計し、設定を保存してから、メイン アクティビティに設定取得コードを追加しました。アプリケーションは正常に機能しました。
しかし、データを消去したり、新規インストールを行ったりすると、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";
}
}
修正により問題が解決します。ただし、私が行ったように環境設定の初期化を行っている人は見たことがありません。
だから、これが好みを初期化する正しい方法であるかどうか疑問に思っていますか?