这段代码有什么不应该工作的原因吗?大多数时候它可以工作,但如果这是第一次打开应用程序,它不会。当我尝试调用 profileSelected 时,我在 ManageBaby1/NewBabyProfile 活动中收到 NullPointerException。然后,如果我重新打开应用程序并选择另一个按钮(比如我第一次单击 babyOneButton,第二次单击 babyTwoButton)一切正常。我什至可以返回并再次单击 babyOneButton,它会正常工作。由于某种原因,按下按钮时没有正确写入?
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 语句(需要在 MainActivity 中编写 profileSelected),它总是可以正常工作。出于某种原因,它只是在我第一次单击按钮时不起作用。