0

我在 on create 方法中添加了两个复选框

  checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
  checkBox2 = (CheckBox) findViewById(R.id.checkBox2);
  checkBox1.setOnCheckedChangeListener(this) ; 
  checkBox2.setOnCheckedChangeListener(this) ;

复选框的主要功能,当ischeck()时,一张图片将添加到主布局中,当取消选中时,图片将被删除>>我使用了下面的代码,第一个复选框工作正常第二个复选框当我这样做检查它显示图片,然后即使取消选中它们我也可以删除它们......我的代码哪里有问题?

   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

// TODO Auto-generated method stub
if(checkBox1.isChecked())
{ 

    ......
    mapOverlays.add(custom); 
}
else {
    mapOverlays.remove(custom)  ;
}

if (checkBox2.isChecked())
{
    ....

    mapOverlays.add(custom2);
}
else 
{
    mapOverlays.remove(custom2)  ;
}
}
}
4

2 回答 2

2

您正在以不同的方式处理第二个复选框检查。可能代码应该是这样的?

if (checkBox2.isChecked())
{
    ...
    mapOverlays.add(custom2);
}
else
{
    mapOverlays.remove(custom2);
}

更新:如果您的代码在当前编辑中看起来像,那么问题是块custom2中的声明变量if。您正在删除未添加的 mapOverlay,而是在其他地方声明的另一个。

只需更换

if (checkBox2.isChecked())
{
    MapItemizedOverlay custom2 = ...

经过

if (checkBox2.isChecked())
{
    custom2 = ...

Upd2:您的方法还有另一个问题onCheckedChanged()。首先if-else不仅在 checkBox1 检查/取消检查上运行,而且在 checkBox2 检查/取消检查上运行。第二个也一样if-else

尝试重写方法:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (buttonView.equals(checkBox1)) {
        // first if-else
    } else if (buttonView.equals(checkBox2)) {
        // second if-else
    }
}

甚至更好:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (buttonView.getId() == R.id.checkBox1) {
        if (isChecked) { 
            ...
            mapOverlays.add(custom);
        } else {
            mapOverlays.remove(custom);
        }
    } else if (buttonView.getId() == R.id.checkBox2) {
        if (isChecked) { 
            ...
            mapOverlays.add(custom2);
        } else {
            mapOverlays.remove(custom2);
        }
    }
}
于 2012-07-10T08:41:01.563 回答
0

您还需要将checkedchangelistener 添加到复选框2。

checkBox2.setOnCheckedChangeListener(this) ; 
于 2012-07-10T08:38:34.207 回答