В настоящее время я изучаю явные намерения, и я следовал инструкциям кодирования, и он всегда возвращает исключение NullPointerException.
Это код, в который я ввожу данные для возврата в MainActivity:
if (etSurname.getText().toString().isEmpty())
{
Toast.makeText(Activity3.this, "Fill In A Surname!", Toast.LENGTH_SHORT).show();
}
else
{
String surname=etSurname.getText().toString().trim();
Intent intent=new Intent();
intent.putExtra("surname",surname);
setResult(RESULT_OK,intent);
Activity3.this.finish();
}
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setResult(RESULT_CANCELED);
Activity3.this.finish();
}
});
и это код, который я поместил в MainActivity, который в основном является страницей запуска, где данные, которые я заполнил в Activity3, должны появиться в текстовом представлении:
btnAct3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(MainActivity.this, com.example.explicitintents.Activity3.class);
startActivityForResult(intent, ACTIVITY3);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==ACTIVITY3)
{
if(resultCode==RESULT_OK)
{
tvResults.setText(data.getStringExtra("surname"));
}
if(resultCode==RESULT_CANCELED)
{
tvResults.setText("no data received!");
}
}
}
Я попытался использовать функцию отладки, и она указывает на эту строку:
tvResults.setText(data.getStringExtra("surname"));
Я ожидаю, что фамилия, которую я заполнил в EditText в Activity3, появится в MainActivity, когда я нажму кнопку «Отправить».
Вместо этого он закрывает приложение, и вот что появляется в logcat:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.explicitintents.MainActivity.onActivityResult(MainActivity.java:69)