0

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:

  1. 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);
    
        }
    });
    
  2. 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.

Md. Asaduzzaman
  • 13,121
  • 2
  • 19
  • 34
Obbila
  • 1

1 Answers1

1

It seems like , the problem is in textview. The initialization is some how giving you a problem. Your mDateSelected is null. so, please check initialization properly. Plese confirm the id for mDateSelected is in CustomerMapActivity and the initialization line is executed before calling startActivityForResult(intent, 1);

UD..
  • 216
  • 4
  • 10