我试图从两个不同的活动中获得两个不同的意图。我在接收活动的OnCreate中尝试了以下方法:
Intent intent1 = getIntent();
if(intent1.getStringExtra("packagename").equals("com.example.kaad.calenderlearning.MainActivity")) {
DateString = intent1.getStringExtra("DATE");
try {
DateFormat df = new SimpleDateFormat("MMM d,yyyy", Locale.ENGLISH);
date = df.parse(DateString);
} catch (ParseException e) {
e.printStackTrace();
}
DateTextView.setText(DateString);
save = true;
correctintent = false;
}
else
{
Bundle extras = getIntent().getExtras();
if (extras != null)
{
rowID = extras.getLong("row_id");
AppointmentsEditText.setText(extras.getString("title"));
LocationNameEdit.setText(extras.getString("location"));
AppointmentDoctorEdit.setText(extras.getString("doctor"));
DateTextView.setText(extras.getString("date"));
}
if(getIntent().getExtras() == null)
{
save = true;
}
correctintent = true;
save = false;
}
当intentExtra出现在intent中时,它可以工作。但是,它没有转到else语句。相反,它显示以下错误:
java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.kaad.calenderlearning / com.example.kaad.calenderlearning.MakeAppointmentsActivity}: java.lang.NullPointerException:尝试调用虚方法 ' boolean java.lang.String.equals(java.lang.Object)'在null对象上 参考
我研究过这个话题。但是我的项目中没有一个解决方案有效。我真的很感谢这个社区的帮助。
答案 0 :(得分:0)
首先检查Intent是否包含包名! 如果包含然后只提取它, 如果不包含,那么它将执行你的其他部分。
Intent intent1 = getIntent();
if(intent1.hasExtra("packagename")){
if(intent1.getStringExtra("packagename").equals("com.example.kaad.calenderlearning.MainActivity")) {
DateString = intent1.getStringExtra("DATE");
try {
DateFormat df = new SimpleDateFormat("MMM d,yyyy", Locale.ENGLISH);
date = df.parse(DateString);
} catch (ParseException e) {
e.printStackTrace();
}
DateTextView.setText(DateString);
save = true;
correctintent = false;
}
}//if(intent1.hasExtra("packagename")) closes here....
else{
Bundle extras = getIntent().getExtras();
if (extras != null)
{
rowID = extras.getLong("row_id");
AppointmentsEditText.setText(extras.getString("title"));
LocationNameEdit.setText(extras.getString("location"));
AppointmentDoctorEdit.setText(extras.getString("doctor"));
DateTextView.setText(extras.getString("date"));
}
if(getIntent().getExtras() == null)
{
save = true;
}
correctintent = true;
save = false;
}
答案 1 :(得分:0)
您可以这样做以避免NullPointerException:
Intent intent1 = getIntent();
if ("com.example.kaad.calenderlearning.MainActivity".equals( intent1.getStringExtra("packagename")) {...}