你好,我对Android很新。我开发了一个计算器,它有10个数字按钮和+, - ,*,/操作按钮。
但是当我点击相等的按钮时,它会给出ResourceNotFoundException。请帮我解决一下这个。 感谢
public class MainActivity extends Activity implements OnClickListener{
Button one,two,three,four,five,six,seven,eight,nine,zero,add,equal;
TextView displayVw;
int btnVal=0;
int total=0;
int num1,num2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
displayVw=(TextView) findViewById(R.id.textView_display);
displayVw.setHint("0");
one=(Button) findViewById(R.id.button_1);
one.setOnClickListener(this);
two=(Button) findViewById(R.id.button_2);
two.setOnClickListener(this);
three=(Button) findViewById(R.id.button_3);
three.setOnClickListener(this);
four=(Button) findViewById(R.id.button_4);
four.setOnClickListener(this);
five=(Button) findViewById(R.id.button_5);
five.setOnClickListener(this);
six=(Button) findViewById(R.id.button_six);
six.setOnClickListener(this);
seven=(Button) findViewById(R.id.button_7);
seven.setOnClickListener(this);
eight=(Button) findViewById(R.id.button_8);
eight.setOnClickListener(this);
nine=(Button) findViewById(R.id.button_9);
nine.setOnClickListener(this);
zero=(Button) findViewById(R.id.button_0);
zero.setOnClickListener(this);
equal=(Button) findViewById(R.id.button_equal);
equal.setOnClickListener(this);
add=(Button) findViewById(R.id.button_add);
add.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
String currentVal="";
if(v.getId()==R.id.button_1)
{
btnVal=1;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_2)
{
btnVal=2;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_3)
{
btnVal=3;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_4)
{
btnVal=4;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_5)
{
btnVal=5;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_six)
{
btnVal=6;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_7)
{
btnVal=7;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_8)
{
btnVal=8;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_9)
{
btnVal=9;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_0)
{
btnVal=0;
displayVw.append(currentVal+btnVal);
currentVal=displayVw.getText().toString();
}
if(v.getId()==R.id.button_add)
{
num1=Integer.parseInt(displayVw.getText().toString());
btnVal=0;
//currentVal="";
displayVw.setText("");
}
if(v.getId()==R.id.button_equal)
{
num2=Integer.parseInt(displayVw.getText().toString());
total=num1+num2;
displayVw.setText(total);
}
}
}
这是mylogcat
07-18 09:21:08.930:E / AndroidRuntime(27409):致命异常:主要 07-18 09:21:08.930:E / AndroidRuntime(27409): android.content.res.Resources $ NotFoundException:字符串资源ID
0x91 07-18 09:21:08.930:E / AndroidRuntime(27409):在android.content.res.Resources.getText(Resources.java:1068)07-18
09:21:08.930:E / AndroidRuntime(27409):at android.widget.TextView.setText(TextView.java:4546)07-18 09:21:08.930:E / AndroidRuntime(27409):at com.chanaka.calculator.MainActivity.onClick(MainActivity.java:158) 07-18 09:21:08.930:E / AndroidRuntime(27409):at android.view.View.performClick(View.java:4475)07-18 09:21:08.930: E / AndroidRuntime(27409):at android.view.View $ PerformClick.run(View.java:18786)07-18 09:21:08.930:E / AndroidRuntime(27409):at android.os.Handler.handleCallback(Handler.java:730)07-18 09:21:08.930:E / AndroidRuntime(27409):at android.os.Handler.dispatchMessage(Handler.java:92)07-18 09:21:08.930:E / AndroidRuntime(27409):at android.os.Looper.loop(Looper.java:137)07-18 09:21:08.930: E / AndroidRuntime(27409):at android.app.ActivityThread.main(ActivityThread.java:5419)07-18 09:21:08.930:E / AndroidRuntime(27409):at java.lang.reflect.Method.invokeNative(Native Method)07-18 09:21:08.930:E / AndroidRuntime(27409):at java.lang.reflect.Method.invoke(Method.java:525)07-18 09:21:08.930: E / AndroidRuntime(27409):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1209) 07-18 09:21:08.930:E / AndroidRuntime(27409):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)07-18 09:21:08.930:E / AndroidRuntime(27409):at dalvik.system.NativeStart.main(原生方法)
答案 0 :(得分:2)
更改
displayVw.setText(total);
到
displayVw.setText(String.valueOf(total));
答案 1 :(得分:1)
您需要String
在TextView
..
displayVw.setText(total);
displayVw.setText(total+"");
建议:
将每个整数转换为字符串,然后再将其设置为TextView
答案 2 :(得分:1)
替换
displayVw.setText(total);
通过
displayVw.setText(total + "");
您需要将int值显式转换为字符串,因为setText()
需要String值。
您可以通过合并int_variable + ""
之类的空字符串将int转换为字符串,也可以使用String.valueOf(int_variable)
。希望这些信息对您有所帮助。
答案 3 :(得分:1)
尝试显示总数:
displayVw.setText(String.valueOf(total));
而不是:
displayVw.setText(total);