如何在android studio中的另一个中调用许多方法

我正在android studio上创建测验应用程序。我需要在用户提交分数时显示吐司。我想在submitOnClick方法内调用我的calculateScore方法,但是calculateScore方法使应用程序崩溃。

如果我在提交内调用calculateScore,则该应用程序将崩溃,如果我将其称为onClick,则该应用程序将崩溃。

我的代码:

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

        final Button button = findViewById(R.id.submit);
        button.setOnClicklistener(submitOnClick);

    }

    final View.OnClicklistener submitOnClick = new View.OnClicklistener() {
        @Override
        public void onClick(View v) {
            calculateScore();

            Toast.makeText(Mainactivity.this,"Your score is " + score,Toast.LENGTH_LONG).show();
        }
    };

        public void checkQuestion1(View view) {
            boolean checked = ((RadioButton) view).isChecked();

            // Check which radio button was clicked
            switch (view.getId()) {
                case R.id.right:
                    if (checked)
                        score += 1;
                    break;
                case R.id.wrong:
                    if (checked)
                        score += 0;
                    break;
            }

        }

        public void checkQuestion2(View view) {

            CheckBox function = findViewById(R.id.checkbox_function);
            CheckBox undefined = findViewById(R.id.checkbox_undefined);
            CheckBox booleans = findViewById(R.id.checkbox_booleans);

            boolean isCheckedFunction = function.isChecked();
            boolean isCheckedUndefined = undefined.isChecked();
            boolean isCheckedBooleans = booleans.isChecked();

            if (isCheckedUndefined && isCheckedBooleans && !isCheckedFunction) {
                score += 1;
            } else {
                score += 0;
            }

        }

        public void checkQuestion3(View view) {

            EditText userInput = findViewById(R.id.inputAnswer);
            String name = userInput.getText().toString();

            if (name.trim().equalsIgnoreCase("Class")) {
                score += 1;
            } else {
                score += 0;
            }
        }

        public void checkQuestion4(View view) {
            boolean checked = ((RadioButton) view).isChecked();
            switch (view.getId()) {
                case R.id.correct:
                    if (checked)
                        score += 1;
                    break;
                case R.id.incorrect:
                    if (checked)
                        score += 0;
                    break;
            }

        }

        public void checkQuestion5(View view) {

            CheckBox correctOne = findViewById(R.id.checkbox_correct_one);
            CheckBox correctTwo = findViewById(R.id.checkbox_correct_two);
            CheckBox incorrectOne = findViewById(R.id.checkbox_incorrect_one);
            CheckBox incorrectTwo = findViewById(R.id.checkbox_incorrect_two);
            boolean isCheckedCorrectOne = correctOne.isChecked();
            boolean isCheckedCorrectTwo = correctTwo.isChecked();
            boolean isCheckedIncorrectOne = incorrectOne.isChecked();
            boolean isCheckedIncorrectTwo = incorrectTwo.isChecked();

            if (isCheckedCorrectOne && isCheckedCorrectTwo && !isCheckedIncorrectOne & !isCheckedIncorrectTwo) {
                score += 1;
            } else {
                score += 0 ;
            }

        }


        public void calculateScore(){
            checkQuestion2(null);
            checkQuestion1(null );
            checkQuestion3(null);
            checkQuestion4(null);
            checkQuestion5(null);
        }

logcat:     ---------崩溃开始

  

2019-11-04 10:09:57.514 11886-11886 / com.example.android.quizzapp   E / AndroidRuntime:致命异常:main       流程:com.example.android.quizzapp,PID:11886       java.lang.NullPointerException:尝试在null对象上调用虚拟方法'boolean android.widget.CompoundButton.isChecked()'   参考           在com.example.android.quizzapp.Mainactivity.checkQuestion1(Mainactivity.java:39)           在com.example.android.quizzapp.Mainactivity.calculateScore(Mainactivity.java:122)           在com.example.android.quizzapp.Mainactivity $ 1.onClick(Mainactivity.java:32)           在android.view.View.performClick(View.java:5610)           在android.view.View $ PerformClick.run(View.java:22265)           在android.os.Handler.handleCallback(Handler.java:751)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:154)           在android.app.activityThread.main(activityThread.java:6077)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

maggii86 回答:如何在android studio中的另一个中调用许多方法

您致电

checkQuestion1(null )

为null,因此会与NPE崩溃

本文链接:https://www.f2er.com/3168323.html

大家都在问