Android onActivityResult()和data.getStringExtra()出现问题,给出java.lang.NullPointerException:
我一直在尝试让它工作,以便在不重新启动的情况下将信息传递回主活动 应用程序在返回到父活动时崩溃,并出现以下错误: java.lang.RuntimeException:传递结果失败 ResultInfo{who=null,request=1,result=1,data=Intent{(有附加项) }}到活动{…CustomerMapActivity}: java.lang.NullPointerException:尝试调用虚拟方法“void” 空值上的android.widget.TextView.setText(java.lang.CharSequence)“” 对象引用 还表明: 原因:java.lang.NullPointerException:尝试调用虚拟机 方法'void android.widget.TextView.setText(java.lang.CharSequence)' 关于空对象引用 在 这是父代码中的哪一行:Android onActivityResult()和data.getStringExtra()出现问题,给出java.lang.NullPointerException:,android,Android,我一直在尝试让它工作,以便在不重新启动的情况下将信息传递回主活动 应用程序在返回到父活动时崩溃,并出现以下错误: java.lang.RuntimeException:传递结果失败 ResultInfo{who=null,request=1,result=1,data=Intent{(有附加项) }}到活动{…CustomerMapActivity}: java.lang.NullPointerException:尝试调用虚拟方法“void” 空值上的android.widget.TextVie
mDateSelected.setText(mDate);
这是我的家长活动的代码:
mSelectPickupTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CustomerMapActivity.this, DateCalendarActivity.class);
startActivityForResult(intent, 1);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
if (data != null) {
mDate = data.getStringExtra("date");
mDateSelected.setText(mDate);
mTime = data.getStringExtra("time");
mTimeSelected.setText(mTime);
} else {
Log.d("TAG_MA", "data is null");
}
}
if (resultCode == RESULT_CANCELED) {
mSelectPickupTime.setText("Please choose time and date");
}
}
}
public class DateCalendarActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
private TextView mDateSelected, mTimeSelected;
private Button mSelectTime, mConfirmDateAndTime;
private CalendarView mCalendarView;
private String mDate, mTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_date_calendar);
mDateSelected = (TextView) findViewById(R.id.dateSelected);
mTimeSelected = (TextView) findViewById(R.id.timeSelected);
mSelectTime = (Button) findViewById(R.id.selectTime);
mConfirmDateAndTime = (Button) findViewById(R.id.confirmDateAndTime);
mCalendarView = (CalendarView) findViewById(R.id.calendarView);
mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView calendarView, int i, int i1, int i2) {
mDate = i + "/" + i1 + "/" + i2;
mDateSelected.setText(mDate);
}
});
mSelectTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogFragment timePicker = new TimePickerFragment();
timePicker.show(getSupportFragmentManager(), "time picker");
}
});
mConfirmDateAndTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent resultIntent = new Intent();
resultIntent.putExtra("date", mDate);
resultIntent.putExtra("time", mTime);
setResult(RESULT_OK, resultIntent);
finish();
}
});
}
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
//pick a time
mTime = i + ":" + i1;
//set time
mTimeSelected.setText(mTime);
}
}
无法找出发生这种情况的原因。非常感谢您的帮助。问题似乎出在textview中。初始化是如何给您带来问题的。您的mDateSelected为空。因此,请正确检查初始化。请在调用startActivityForResult(intent,1)之前确认所选MDATE的id在CustomerPactivity中,并执行初始化行
mDateSelected
为空,它表示。您从未在CustomerMapActivity
中初始化mDateSelected
。同时发布CustomerMapActivity
代码以明确说明。您是否在CustomerMapActivity
中声明了mDateSelected
?发布您的CustomerMapActivity
的全部代码。是的,我的xml布局文件中有一个愚蠢的错误。谢谢你给我指出这个问题。请接受我的答案并投票表决。