我的应用程序出现问题。按任何按钮都崩溃。
我使用了字符串对象的浮点转换。
我的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中出现此错误:
E / Android运行时:致命异常:主要 流程:com.example.admin.myapplication,PID:14892 android.content.res.Resources $ NotFoundException:字符串资源ID#0x3b5 在android.content.res.Resources.getText(Resources.java:328) 在android.content.res.MiuiResources.getText(MiuiResources.java:125) 在android.widget.TextView.setText(TextView.java:4432) 在com.example.admin.myapplication.MainActivity.onClick(MainActivity.java:45) 在android.view.View.performClick(View.java:5215) 在android.view.View $ PerformClick.run(View.java:21196) 在android.os.Handler.handleCallback(Handler.java:742) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:157) 在android.app.ActivityThread.main(ActivityThread.java:5603) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:774) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) I / Process:正在发送信号。 PID:14892 SIG:9应用程序终止。
答案 0 :(得分:2)
您不能在setText方法中添加整数值。
尝试使用tv2.setText(thirdvalue + "");
或tv2.setText(String.valueOf(thirdvalue));
阅读setText()方法boolean indexing
答案 1 :(得分:2)
将所有tv2.setText(thirdvalue);
替换为tv2.setText(String.valueOf(thirdvalue));
,您无需在onClick方法中添加此(tv2.findViewById(R.id.tv2);)
答案 2 :(得分:1)
添加String.valueOf(thirdValue),因为他可能正在搜索id而不是设置文本
tv2.setText(String.valueOf(thirdvalue));
答案 3 :(得分:0)
您应该将setText()的参数作为String传递,因此将代码更改为
tv2.setText(thirdvalue.toString);
,其余按钮也是如此。这将使其成为一个字符串。