java - 我正在尝试将一串数字放入 TextView 但我的应用程序在显示之前崩溃了
问题描述
我正在做的是,“询问”以公里为单位的数字,然后单击按钮将该数字转换为厘米并在 TextView 中显示结果,但是当您单击按钮时,应用程序将关闭。
我使用的是三星 Galaxy A70
安卓版本:10
MainActivity.java
public void calcular(View v){
EditText text = findViewById(R.id.pt_entrada);
input = Integer.parseInt(text.getText().toString());
valor = input * cm;
Log.d("info", String.valueOf(valor)); // This actually gives me de log on the Logcat tab.
TextView tv = (TextView)findViewById(R.id.tv_pantalla); // But once the app arrives here, it crashes.
tv.setText(valor);
}
activity_main.xml
<Button
android:id="@+id/b_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:onClick="calcular"
android:text="@string/calcular"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/pt_entrada"
app:layout_constraintTop_toTopOf="@+id/pt_entrada" />
<TextView
android:id="@+id/tv_pantalla"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pt_entrada" />
<EditText
android:id="@+id/pt_entrada"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="8dp"
android:autofillHints="@string/kmacm"
android:ems="10"
android:hint="@string/kmacm"
android:inputType="numberDecimal"
app:layout_constraintEnd_toStartOf="@+id/b_send"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
这是它在 Logcat 选项卡上显示的错误:
Process: com.example.conversor, PID: 12602
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
at android.view.View.performClick(View.java:7862)
at android.widget.TextView.performClick(TextView.java:15004)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View.performClickInternal(View.java:7831)
at android.view.View.access$3600(View.java:879)
at android.view.View$PerformClick.run(View.java:29359)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
at android.view.View.performClick(View.java:7862)
at android.widget.TextView.performClick(TextView.java:15004)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View.performClickInternal(View.java:7831)
at android.view.View.access$3600(View.java:879)
at android.view.View$PerformClick.run(View.java:29359)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x64
at android.content.res.Resources.getText(Resources.java:402)
at android.widget.TextView.setText(TextView.java:6942)
at com.example.conversor.MainActivity.calcular(MainActivity.java:29)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
at android.view.View.performClick(View.java:7862)
at android.widget.TextView.performClick(TextView.java:15004)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View.performClickInternal(View.java:7831)
at android.view.View.access$3600(View.java:879)
at android.view.View$PerformClick.run(View.java:29359)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
2021-10-11 17:20:20.010 12602-12602/com.example.conversor I/Process: Sending signal. PID: 12602 SIG: 9
解决方案
更简单的是将它与空字符串连接起来。
tv.setText(valor + "");
推荐阅读
- c++ - 局部约束可以评估局部 lambda 吗?
- google-colaboratory - 如何在 Google Colab 中查找 TPU 名称和区域?
- php - Symfony 验证规则是否随着更新而改变?
- azure-active-directory - 我可以使用 Terraform 为托管标识分配应用程序角色访问权限吗?
- react-native - 如何在 ios 中导入 salesforce 营销云(反应原生)
- python - 使用 python 中的子进程运行带有命令行参数的 C#.NET 可执行文件
- performance - Jmeter问题中的Filename.tar.gz文件下载
- java - 微服务中异步处理大量消息
- node.js - 带有 Mongoose 的子文档的聚合查询
- typescript - 在 React Native Expo 中预览上传的文档