在 MainActivity 中使用 getStringExtra 时抛出 NullPointerException



我目前正在学习明确的意图,我已经遵循了指示的编码,它总是返回一个NullPointerException。

这是我输入数据以返回到主活动的代码:

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")); 

我希望我在活动 3 的编辑文本中填写的姓氏在点击提交按钮时出现在主活动中。

相反,它会关闭应用程序,这就是日志中出现的内容:

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)

尝试调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence(' on a null 对象引用

上面的错误意味着您正在尝试在空引用文本视图上使用 .setText(( 方法。

所以,你的问题是你忘记了将你的电视结果与设计xml绑定。在你的onCreate((方法中,只需添加下面的代码。

TextView tvResults = findViewById(R.id.your_textview_name);  //bind with your tv name in xml

相关内容

最新更新