此代码中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。
答案 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”。