在 MainActivity 中使用 getStringExtra 时抛出 NullPointerException
Throws in a NullPointerException when using a getStringExtra in MainActivity
我目前正在学习显式意图,并且我遵循了指示的编码,它总是 return 是 NullPointerException。
这是我向 MainActivity return 输入数据的代码:
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"));
我希望当我点击“提交”按钮时,我在 Activity3 上的 EditText 中填写的姓氏会出现在 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)
Attempt to invoke virtual method 'void
android.widget.TextView.setText(java.lang.CharSequence)' on a null
object reference
以上错误意味着您正在尝试对空引用 TextView 使用 .setText() 方法。
所以,您的问题是您忘记将 tvResults 与设计绑定 xml。
在您的 onCreate() 方法中,只需添加以下代码。
TextView tvResults = findViewById(R.id.your_textview_name); //bind with your tv name in xml
我目前正在学习显式意图,并且我遵循了指示的编码,它总是 return 是 NullPointerException。
这是我向 MainActivity return 输入数据的代码:
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"));
我希望当我点击“提交”按钮时,我在 Activity3 上的 EditText 中填写的姓氏会出现在 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)
Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
以上错误意味着您正在尝试对空引用 TextView 使用 .setText() 方法。
所以,您的问题是您忘记将 tvResults 与设计绑定 xml。 在您的 onCreate() 方法中,只需添加以下代码。
TextView tvResults = findViewById(R.id.your_textview_name); //bind with your tv name in xml