android - 按下四个按钮中的任何一个时,我的应用程序崩溃了
问题描述
我的应用程序出现问题。它在按下任何按钮时都会崩溃。
我使用了字符串对象的浮点转换。
我的 MainActivity.java 文件:
package com.example.admin.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView tv1,tv2;
EditText et1;
Button btn1,btn2,btn3,btn4;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=findViewById(R.id.tv1);
tv2=findViewById(R.id.tv2);
et1=findViewById(R.id.et1);
btn1=findViewById(R.id.btn1);
btn2=findViewById(R.id.btn2);
btn3=findViewById(R.id.btn3);
btn4=findViewById(R.id.btn4);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
}
@Override
public void onClick(View v) {
tv2.findViewById(R.id.tv2);
String value=et1.getText().toString();
int newvalue=Integer.parseInt(value);
int thirdvalue=0;
switch (v.getId()){
case R.id.btn1:
thirdvalue = (int) (newvalue*37.98f);
tv2.setText(thirdvalue);
break;
case R.id.btn2:
thirdvalue = (int) (newvalue*45.47f);
tv2.setText(thirdvalue);
break;
case R.id.btn3:
thirdvalue = (int) (newvalue*50.52f);
tv2.setText(thirdvalue);
break;
case R.id.btn4:
thirdvalue = (int) (newvalue*63.16f);
tv2.setText(thirdvalue);
break;
}
}
}
我想在按下任何按钮时获得结果,并根据按下的按钮给出结果。
它在我的 logcat 中给出了这个错误:
dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5603) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) I/Process:发送信号。PID:14892 SIG:9 应用程序终止。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 运行(ZygoteInit.java:774) I/Process:发送信号。PID:14892 SIG:9 应用程序终止。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 运行(ZygoteInit.java:774) I/Process:发送信号。PID:14892 SIG:9 应用程序终止。
解决方案
您不能在 setText 方法中添加整数值。尝试使用tv2.setText(thirdvalue + "");
或tv2.setText(String.valueOf(thirdvalue));
在此处阅读 setText() 方法
推荐阅读
- flutter - 为什么 Navigator.pushNamed(context, "route"); 在我的 flutter-cupertino-app 代码示例中工作?
- python - Python 2 单元测试未从命令行运行
- java - 如何防止java表单自动舍入值
- google-apps-script - 是否有 API 函数可以用来评论 Google Photos 上的相册
- kubernetes - 获取 https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: i/o timeout]
- javascript - GraphQL - 嵌套查询的最佳实践是什么?
- c++ - c ++读取大量文件的一小部分
- c# - Selenium 单击 href 中的链接
- mysql - 在复合主键表的数据查询中获取 vs filter_by
- css - 为什么 scss 文件在 laravel 6 中不起作用?