这段代码中true和false的区别是什么?

时间:2011-08-20 23:32:47

标签: java android

此代码中true和false的区别是什么?

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        if (isChecked) {
            int cbcheck = 1;
        } else {
            int cbcheck = 0;
        }
    }

    @Override
    public void onClick(View v) {
        ;
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.registerbut:
            onCheckedChanged(cbagree, false);
            if (cbcheck == 1) {
                Intent intent = new Intent(this,
                    RegisterScreen2.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                startActivity(intent);
            } else if (cbcheck == 0){
            }
            break;
        }
    }

它所说的部分onCheckedChanged(cbagree, true);如果我传递了错误会发生什么?

我想这样做,如果选中该框,意图将会运行,否则它会指示您选中该框。我已经尝试保存复选框,然后使用savepreferences和loadpreferences加载它,但我发现这太麻烦了。有没有其他方法可以实现这个目标?

这是在android btw。

4 个答案:

答案 0 :(得分:4)

正如它所写的,没有区别,因为你的函数onCheckedChanged()字面上什么都不做:在两个本地块中声明了局部变量,它们立即超出了作用域,并且根本没有这个函数的净效果。 / p>

也许你的意思是修改一些私人类成员?


建议:这是关于通过私有成员传递状态更改的想法:

class Thing
{
  private int cbcheck;

  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
  {
    cbcheck = isChecked ? 1 : 0;
  }

  /* ... */
}

答案 1 :(得分:1)

此代码看起来有问题,onclick检查实例(或类)变量cbcheck

if (cbcheck == 1) {

调用onCheckedChanged后,cbcheck中设置的onCheckedChanged是一个局部变量,因此更改无效。

也许onCheckedChanged应该是

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked) {
        cbcheck = 1;
    } else {
        cbcheck = 0;
    }
}

答案 2 :(得分:1)

执行此操作的一种非常简单的方法是保留对您正在使用的CompoundButton的引用,并在CompoundButton.isChecked方法中调用onClick

你不应该自己调用onCheckChanged,而应该使用CompoundButton.setOnCheckedChangeListener来注册一个监听器(在这种情况下可能是cbagree.setOnCheckedChangeListener(this))。现在,当用户“检查”按钮时,isChecked为真,当用户“取消选中”按钮时,isChecked为假。

但是,在这种情况下,你甚至不需要 来注册一个监听器:

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.registerbut:
        if (cbagree.isChecked()) {
            Intent intent = new Intent(this,
                RegisterScreen2.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            startActivity(intent);
        }
        break;
    }
}

答案 3 :(得分:0)

不是我的字段,虽然在这种情况下是真的意味着“boolean isChecked”。