android - 如何在 OnClickListener 上编辑 TextView
问题描述
我在将文本放入 TextView 时遇到问题。我只想把写入editTextNombre的文本放到tvMensaje
我该如何解决这个错误?我找不到问题....我只知道它在 setText 的第 29 行,但我不知道,因为它返回错误
public class MainActivity extends AppCompatActivity{
EditText editTextNombre;
String nombre;
Button bMostrar;
TextView tvMensaje;
@Override
protected void onCreate(Bundle savedInstanceState) {
nombre="";
super.onCreate(savedInstanceState);
tvMensaje=findViewById(R.id.textViewMensaje);
setContentView(R.layout.activity_main);
editTextNombre=findViewById(R.id.editTextNombre);
bMostrar=findViewById(R.id.buttonMostrarNombre);
bMostrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nombre=editTextNombre.getText().toString();
Log.i("valor:",nombre);
tvMensaje.setText(nombre);
}
});
}
}
我收到以下错误:
AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.textoplano, PID: 3027
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.textoplano.MainActivity$1.onClick(MainActivity.java:29)
问题是没有正确获取文本
解决方案
“findViewById”调用返回空值,因为“textViewMensafe”视图对象在调用时不存在。'setContentView' 调用获取包含布局信息的 'activity_main.xml' 文件并创建 View 对象。因此,如果您移动此语句:
tvMensaje=findViewById(R.id.textViewMensaje);
在这一行之后:
setContentView(R.layout.activity_main);
那么 tvMensafe 不会为空,你不会得到异常
推荐阅读
- spring - Crud Repository 如何将`findBy`与数据成员的数据成员一起使用
- c++ - 如何获取 QNetworkConfiguration UserChoice 对话框?
- c++ - 将字符向量转换为单个字符串
- c# - ScrollViewer 在没有固定高度的情况下不显示滚动远
- java - Project Reactor 的 Flux 在处理错误期间获取失败项目
- angular - 仅当第一个 Promise 出错时,我如何返回不同的 Promise?
- mysql - 同一张表上的相同类型查询需要不同的时间来执行 MySQL
- java - OpenGL 向上运动
- r - 将虚拟数据帧转换为数据帧
- bash - 在带有切割器的打印机中从 shell 脚本打印多页文件