当前位置: 首页 > 知识库问答 >
问题:

每次我按下结果按钮,应用程序都会崩溃

李光华
2023-03-14

E/AndroidRuntime:致命异常:主进程:com。维内特。计算器,PID:29435 java。lang.NullPointerException:尝试调用虚拟方法的布尔java。朗,布尔<代码>在此输入代码booleanValue()”在com的空对象引用上。维内特。计算器主要活动16美元。android上的onClick(MainActivity.java:177)。看法看法android上的performClick(View.java:6294)。看法查看$PerformClick。在android上运行(View.java:24770)。操作系统。汉德勒。android上的handleCallback(Handler.java:790)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:164)。应用程序。活动线程。java上的main(ActivityThread.java:6494)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:438)。Android内部的操作系统。合子体。main(ZygoteInit.java:807)应用程序终止。

**Activity.java**

package com.vineet.calculator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


    Button btn0;
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    Button btn5;
    Button btn6;
    Button btn7;
    Button btn8;
    Button btn9;
    Button btnResult;
    Button btnClear;
    Button btnExit;

    Button btnAdd;
    Button btnSub;
    Button btnMul;
    Button btnDiv;

    EditText etNumber;
    TextView tvAnswer;

    int val1, val2;
    Boolean boolMul, boolAdd, boolSub, boolDiv;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn0 = findViewById(R.id.btn0);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn3 = findViewById(R.id.btn3);
        btn4 = findViewById(R.id.btn4);
        btn5 = findViewById(R.id.btn5);
        btn6 = findViewById(R.id.btn6);
        btn7 = findViewById(R.id.btn7);
        btn8 = findViewById(R.id.btn8);
        btn9 = findViewById(R.id.btn9);
        btnAdd = findViewById(R.id.btnAdd);
        btnSub = findViewById(R.id.btnSub);
        btnMul = findViewById(R.id.btnMul);
        btnDiv = findViewById(R.id.btnDiv);
        btnResult = findViewById(R.id.btnResult);
        btnClear = findViewById(R.id.btnClear);
        btnExit = findViewById(R.id.btnExit);
        etNumber = findViewById(R.id.etNumber);
        tvAnswer = findViewById(R.id.tvAnswer);


        btn0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"0");
            }
        });
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"1");
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"2");
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"3");
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"4");
            }
        });
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"5");
            }
        });
        btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"6");
            }
        });
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"7");
            }
        });
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"8");
            }
        });
        btn9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText(etNumber.getText()+"9");
            }
        });
        btnClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                etNumber.setText("");
                tvAnswer.setText("");
            }
        });


        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val1 = Integer.valueOf(etNumber.getText().toString());
                boolAdd = true;
                etNumber.setText(null);
            }
        });

        btnSub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val1 = Integer.valueOf(etNumber.getText().toString());
                boolSub = true;
                etNumber.setText(null);
            }
        });

        btnMul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val1 = Integer.valueOf(etNumber.getText().toString());
                boolMul = true;
                etNumber.setText("");
            }
        });

        btnDiv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val1 = Integer.valueOf(etNumber.getText().toString());
                boolDiv = true;
                etNumber.setText("");
            }
        });

        btnResult.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val2 = Integer.valueOf(etNumber.getText().toString());

                if(boolAdd == true){
                    tvAnswer.setText(val1 + val2+"");
                    boolAdd = false;
                }
                if(boolSub == true){
                    tvAnswer.setText(val1 - val2 + "");
                    boolSub = false;
                }

            }
        });

    }
}

共有2个答案

马浩淼
2023-03-14

使用“布尔”而不是“布尔”。布尔值是一个类,它在对象中封装了一个基本类型布尔值。避免使用它,因为它比基元类型占用更多内存。

此外,许多setOnclickListeners实现视图,而不是编写sooo。OnClickListener在主活动中,并使用Switch大小写来处理按钮点击。

班展
2023-03-14

您使用的是Boolean(非基本数据类型)而不是Boolean

必须初始化布尔值才能使用:

Boolean boolMul = new Boolean(false);

同样,初始化所有布尔变量或使用布尔值。

 类似资料:
  • 我是android新手,我正在学习一些教程,在这一点上,当我点击登录按钮时,应用程序不断崩溃。当我运行应用程序并单击登录按钮时,应用程序崩溃,在logcat中,它显示java RuntimeException的这个错误。这是我的logcat,loginactivity。xml和loginactivity。JAVA JAVAlang.RuntimeException:无法启动活动组件信息{com.e

  • 一切正常,应用程序出现了。但当我点击任何切换按钮时,应用程序就会崩溃。 我试过了,但找不到问题。其实我的知识还不够,我是这个领域的新手。所以请帮帮我。 这是查看活动。JAVA 还有这只logcat 2020-03-18 03:16:50.407 31609-31609/? E/lpaper。wallper:运行时设置的未知位_标志:0x8000 2020-03-18 03:17:04.862 31

  • 当我在设备上运行应用程序时单击增量按钮时,我的应用程序意外地强制执行这是我的activity_main.xml代码 这是我的mainactivity.java文件 这是调试报告05-23 22:14:45.695 297 36-29736/com.orton.birthdayCard E/AndroidRuntime:致命异常:主进程:com.orton.birthdayCard,PID:2973

  • 我多次尝试让developers.android(https://developer.android.com/training/basics/firstapp/index.html)上的MyFirstApp教程中的应用程序发挥作用。我正在Nexus4设备上测试我的代码,该设备装有Android 4.4.2 AndroidManifest.xml: MainActivity.java Display

  • 09-08 07:58:32.915 137 26-13726/com.ruthadeaton.bld3.calculator e/androidruntime:致命异常:main process:com.ruthadeaton.bld3.calculator.calculator,PID:13726 java.lang.numberformatexception:empty string ats

  • objectName.java 主要问题是我无法转到“ageinput.java”文件, activity_ageinput.xml activity_ageinput.xml edit_text.xml 崩溃报告