android - textview android 中的 ResourceNotFoundException

标签 android onclicklistener calculator buttonclick

您好,我是 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);
        }

    
    }

}

这是我的日志

07-18 09:21:08.930: E/AndroidRuntime(27409): FATAL EXCEPTION: main 07-18 09:21:08.930: E/AndroidRuntime(27409): android.content.res.Resources$NotFoundException: String resource ID

0x91 07-18 09:21:08.930: E/AndroidRuntime(27409): at 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(Native Method)

最佳答案

改变

displayVw.setText(total);

displayVw.setText(""+total);

因为你写displayVw.setText(total)的时候是使用文本资源。

关于android - textview android 中的 ResourceNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816989/

相关文章:

android - 在 Android 上创建 VPN 配置文件

android - 将功能动态附加到 Button 的 onclicklistener Android

Java计算器不执行if语句

php - 如何从 8 :00 am to 8:00 pm? 计算 15 分钟间隔内的可用时间

java 银行利息/储蓄计算器

android - 使用 RecyclerView 绑定(bind)数据

android - 使用 Intent 删除日历中的事件

android - 测试 RecyclerView 是否有 Espresso 数据

android - 自定义 ListView 的 onClickListener

android - 如何在服务中放置一个 onclick 监听器