Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android空校验器_Android_Database_Checkbox_Null_Equals - Fatal编程技术网

Android空校验器

Android空校验器,android,database,checkbox,null,equals,Android,Database,Checkbox,Null,Equals,我有一个与数据库相关的程序。我通过使用以下命令插入一行来启动程序 long id = db.insertMajor(null, null, null, null); 它工作得很好。我不想更改信息,但让我们忽略这一点,因为目前我已注释掉了所有这些行。现在我想检查它是否为null,应该为null。如果它不是空的,我想勾选一个复选框。如果为空,则我希望不选中该框。到目前为止,我有这条线要测试 String change = db.getMajorTitle(value).getSt

我有一个与数据库相关的程序。我通过使用以下命令插入一行来启动程序

    long id = db.insertMajor(null, null, null, null); 
它工作得很好。我不想更改信息,但让我们忽略这一点,因为目前我已注释掉了所有这些行。现在我想检查它是否为null,应该为null。如果它不是空的,我想勾选一个复选框。如果为空,则我希望不选中该框。到目前为止,我有这条线要测试

    String change = db.getMajorTitle(value).getString(1);
    if (change.equals(null)) {
    filled = false;
    }
填充的布尔值将选中或不选中该框。如果数据库字段已填充或未填充,我总是会得到一个复选标记。怎么了

更新: 因为还没有人弄明白,所以我将发布我的大部分代码来尝试并帮助弄明白。我还重置了模拟器,以确保损坏的数据不会出现问题

    chk1.setChecked(checker(1));
    chk2.setChecked(checker(2));
    chk3.setChecked(checker(3));
    chk4.setChecked(checker(4));
    }

    boolean checker(int value){
        DBAdapter db = new DBAdapter(this);
        boolean filled = false;
        db.open();
        for (int i = 1; i <= 4; i++) {
            String change = db.getMajorTitle(value).getString(1);
            if (change == null) {
                filled = false;
            }else{
                filled = true;
            }
        }
        db.close();
        return filled;
    }
chk1.setChecked(checker(1));
chk2.设置检查(检查(2));
chk3.setChecked(检查者(3));
chk4.设置检查(检查(4));
}
布尔检查器(int值){
DBAdapter db=新的DBAdapter(此);
布尔填充=假;
db.open();

对于(inti=1;i用户异常处理机制。那么您将成功。如

try {
  if(change!=null)
  {
    //do ur work,if not null
  }
  else
  {
    // do some thing
  }
}catch(NullPointerException e)
{
  //do  ur work,if null.
}
如果
change
实例不是
null
,则上述条件始终返回
false
。有关详细信息,请阅读。 如果要检查
null
值,请使用

if( change == null) {
  // change is null, update filled field
} else {
  // change is not null, update filled field
}
数据库字段是否已填充 我总是打勾,怎么了


我想您应该将
填充的
字段初始化为
true
,而从不将其设置为
false
,因为
if
条件总是返回
false
或抛出
NullPointerException

,您真的不需要if语句

filled = (change != null);

db是什么类?你给我们展示了你自己的API吗?谁知道里面发生了什么?你得到了异常吗?
change.equals(null)
更改为null时应引发异常,因为您无法调用null对象的成员。请改为尝试
更改==null
。尝试此操作后,它仍会检查所有对象。这意味着(1)用于设置复选框的代码未正确运行(易于测试,只需将硬代码
填充为
false
,看看会发生什么),或者(2)数据库没有返回
null
(同样易于测试,将
更改
输出到日志中,看看是什么)。感谢您的回复。我知道复选框的代码运行正确,所以我将尝试选项2。如何输出到日志?使用
log
类的函数。在线上有很多关于如何使用它的示例,例如,如果您使用的是Eclipse。我也尝试了此方法。它仍然会检查所有这些示例。这没有检查错误他们中的任何一个
filled = (change != null);