此代碼是否有任何理由不起作用?大多數時候它都可以工作,但如果這是第一次打開應用程序,則不會。當我嘗試調用profileSelected時,ManageBaby1/NewBabyProfile活動中出現NullPointerException。然後,如果我重新打開應用程序並選擇其他按鈕(比如我第一次點擊了babyOneButton,第二次點擊babyTwoButton),一切正常。我甚至可以回去再次點擊babyOneButton,它會正常工作。出於某種原因,按下按鈕時它沒有正確寫入?在按鈕上提交SharedPreferences按
public void babyOneButtonClick(View view) {
profileSelected = "babyOne";
if (babyOneProfile.contains("name")) {
generalPrefsEditor.putString("profile_selected", profileSelected).commit();
Intent goToManageBaby1 = new Intent(this, ManageBaby1.class);
startActivity(goToManageBaby1);
} else {
generalPrefsEditor.putString("profile_selected", profileSelected).commit();
Intent goToNewBabyProfile = new Intent(this, NewBabyProfile.class);
startActivity(goToNewBabyProfile);
}
}
public void babyTwoButtonClick(View view) {
profileSelected = "babyTwo";
if (babyTwoProfile.contains("name")) {
generalPrefsEditor.putString("profile_selected", profileSelected).commit();
Intent goToManageBaby1 = new Intent(this, ManageBaby1.class);
startActivity(goToManageBaby1);
} else {
generalPrefsEditor.putString("profile_selected", profileSelected).commit();
Intent goToNewBabyProfile = new Intent(this, NewBabyProfile.class);
startActivity(goToNewBabyProfile);
}
如果您需要了解更多信息或代碼片段,請讓我知道 - 這已被竊聽了我一段時間,但我一直在它周圍的工作,因爲我不能爲我的生活想出來...
謝謝!
編輯:這裏是ManageBaby1中拋出異常的代碼。
generalPrefs = getSharedPreferences(getString(R.string.general_preferences), 0);
generalPrefsEditor = generalPrefs.edit();
profileSelected = generalPrefs.getString("profile_selected", "profileSelected");
if (profileSelected == "babyOne") {
babyProfile = getSharedPreferences(getString(R.string.baby_one_profile), 0);
} else if (profileSelected =="babyTwo") {
babyProfile = getSharedPreferences(getString(R.string.baby_two_profile), 0);
}
editor = babyProfile.edit();
但是,如果我帶走if語句(即需要profileSelected寫入MainActivity),它始終正常工作。出於某種原因,第一次單擊按鈕時它不起作用。
哪個地方是引發'NullPointerException'?如果可能的話發佈你的logcat! –
我將代碼編輯到我的OP中。例外是指向editor = babyProfile.edit();因爲IF語句不起作用,因爲profileSelected第一次按下按鈕出於某種原因沒有正確寫入。 – tuzion