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

布尔上的nullObjectReference

澹台聪
2023-03-14

出于某种原因,我得到了这个布尔值的空对象引用,我不知道为什么。我不明白为什么布尔值返回空对象引用

这是活动代码

package com.spizer.mizer2;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class ProblemSelector extends AppCompatActivity {

public Boolean AddProb;
public Boolean SubProb;
public Boolean MultiProb;
public Boolean DivisProb;

public int ANum = 0;
public int SNum;
public int MNum;
public int DNum;

//ProblemSelector PS = new ProblemSelector();

CheckBox checkbox1, checkbox2, checkbox3, checkbox4;

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

    checkbox1 = (CheckBox) findViewById(R.id.checkBox1);
    checkbox2 = (CheckBox) findViewById(R.id.checkBox2);
    checkbox3 = (CheckBox) findViewById(R.id.checkBox3);
    checkbox4 = (CheckBox) findViewById(R.id.checkBox4);

    checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (b) {
                AddProb = true;
                Toast.makeText(getBaseContext(), "Add: True", Toast.LENGTH_SHORT).show();
            } else {
                AddProb = false;
                Toast.makeText(getBaseContext(), "Add: False", Toast.LENGTH_SHORT).show();
            }
        }
    });
    checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (b) {
                SubProb = true;
                if(AddProb == false) {
                    SNum = 0;
                }
                else if(AddProb == true) {
                    SNum = 1;
                }
            } else {
                SubProb = false;
            }
        }
    });
    checkbox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (b) {
                MultiProb = true;
                if(AddProb == false && SubProb == false) {
                    MNum = 0;
                }
                else if(AddProb == true && SubProb == false || AddProb == false && SubProb == true) {
                    MNum = 1;
                }
                else if(AddProb == true && SubProb == true) {
                    MNum = 2;
                }
            } else {
                MultiProb = false;
            }
        }
    });
    checkbox4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (b) {
                DivisProb = true;
                if(AddProb == false && SubProb == false && MultiProb == false) {
                    DNum = 0;
                }
                else if(AddProb == true && SubProb == false && MultiProb == false || AddProb == false && SubProb == true && MultiProb == false || AddProb == false && SubProb == false && MultiProb == true) {
                    DNum = 1;
                }
                else if(AddProb == true && SubProb == true && MultiProb == false || AddProb == false && SubProb == true && MultiProb == true || AddProb == true && SubProb == false && MultiProb == true) {
                    DNum = 2;
                }
                else if(AddProb == true && SubProb == true && MultiProb == true) {
                    DNum = 3;
                }
            } else {
                DivisProb = false;
            }
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_problem_selector, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

/** this is called when the user hits the continue button **/
public void DifficultyMenu(View view) {
    Intent DifficultyView = new Intent(this, DifficultyMenu.class);
    //DifficultyView.putExtra("addProb", PS.AddProb);
    //DifficultyView.putExtra("subProb", PS.SubProb);
    //DifficultyView.putExtra("multiProb", PS.MultiProb);
    //DifficultyView.putExtra("divisProb", PS.DivisProb);
    startActivity(DifficultyView);
}
}

这是发生在第101行和第75行的完整错误日志

09-21 11:26:24.671    5078-5078/com.spizer.mizer2 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.spizer.mizer2, PID: 5078
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
        at com.spizer.mizer2.ProblemSelector$3.onCheckedChanged(ProblemSelector.java:75)
        at android.widget.CompoundButton.setChecked(CompoundButton.java:161)
        at android.widget.CompoundButton.toggle(CompoundButton.java:115)
        at android.widget.CompoundButton.performClick(CompoundButton.java:127)
        at android.view.View$PerformClick.run(View.java:20916)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:5972)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

共有1个答案

仇经武
2023-03-14

您应该使用布尔基元数据类型,而不是布尔类对象(注意布尔中的小b),什么时候应该使用布尔的空值?

此外,如果你真的想使用布尔对象,你应该使用equals()来比较值

 类似资料:
  • 问题内容: 如何轻松计算特定列所在的行数和特定列所在的行数? 我无法(或可以?)运行带有count()的查询,因为我将此计数嵌入到了having()子句中,例如: 但是通过上述方法,该函数计算了不等式两侧的每一行。 我尝试过这样的事情 但我得到一个错误 函数if(布尔值,整数,整数)不存在 (似乎它在postgresql中不存在)。 如何轻松计算column为true和false的行数? 问题答案

  • 我正在尝试编译和部署neo4j-connector。 neo4j-connector-impl中的两个类(和)具有以下注释: 我可以想出一些方法(例如,添加一个方法),但这感觉不对:这段代码自一年前提交以来一直未变,所以为什么它不适合我呢?这里可能出了什么问题?

  • 默认情况下,布尔值在Ultragrid上的单元格中显示为选中(true)或未选中(false)的复选框。有没有一种方法可以简单地将它显示为文本,比如“true”或“false”,0或1,甚至“yes”或“no”?我只是想显示布尔值。网格上的复选框给用户一种错误的印象,即他们可以通过尝试选中或取消选中复选框来修改数据。

  • 问题内容: 我们将Findbugs配置为通过Maven在我们的Jenkins上运行。 除其他外,它在以下代码行上抱怨SE_BAD_FIELD: 此错误的说明说 Se:可序列化类(SE_BAD_FIELD)中的非瞬态不可序列化实例字段 该Serializable类定义了一个非基本实例字段,该实例字段既不是临时的,Serializable的也不是java.lang.Object,并且似乎没有实现Ext

  • 我有“删除字面上的”假“布尔值”声纳错误无状态==false。我该怎么修好它?

  • 我试图使用ValidateSet和一个布尔参数,但我无法使它像预期的那样工作。 复制该问题的示例: 我尝试将ValidateSet更改为,选项卡完成按预期工作,但是参数验证仍然失败,因为参数需要字符串和。 我可以将ValidateSet更改为并使其按我所期望的方式运行,但我发现对于完成布尔参数而言,和的用户体验比和要差。 当选择时,函数的预期输出应为;当选择时,函数的预期输出应为。 我在代码中实现