I have been trying to get this working to pass information back to the main activity without restarting it.
The app crashes on return to the parent activity with this error:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=1, data=Intent { (has extras) }} to activity {....CustomerMapActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
Also indicates:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at
which is this line in the parent code:
mDateSelected.setText(mDate);
This is the code for my parent activity:
A button to start the child activity
mSelectPickupTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CustomerMapActivity.this, DateCalendarActivity.class); startActivityForResult(intent, 1); } });
a function to receive the result from the child activity.
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"); } } }
The code for the child activity looks like this:
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);
}
}
Cannot work out why this happens any help much appreciated.