2012-07-10 77 views
0

我在上創建方法增加了兩個複選框複選框的Android

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

的複選框,當ischeck()的照片將被添加到mainlayout當取消選中的圖片將是主要功能刪除>>我使用的代碼波紋管,第一個複選框工作正常第二個複選框,當我檢查它顯示的照片,然後他們我可以刪除他們,即使取消選中...哪裏是我的代碼錯了?

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) ; 
} 
} 
} 

回答

2

您正在處理不同的第二個複選框。可能代碼應該看起來像這樣?

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

UPD:如果你的代碼看起來像在當前編輯,那麼問題是在if塊的聲明custom2變量。您正在刪除未添加的mapOverlay,但另一個在其他位置聲明。

通過

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

UPD2只需更換

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

沒有尚未與你onCheckedChanged()方法的另一個問題。第一個if-else不僅在checkBox1上執行check/uncheck,而且在checkBox2上執行check/uncheck。第二個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); 
     } 
    } 
} 
+0

是是我注意到,但它仍然沒有與我合作 – user1413188 2012-07-10 08:44:21

+0

yeeees它的工作,但我面臨另一個問題,當我檢查兩個在一起,然後我做的第一個複選框的圖片不會被刪除的檢查... – user1413188 2012-07-10 08:55:03

+0

請幫我:) – user1413188 2012-07-10 08:59:07

0

您還需要將checkedchangelistener添加到複選框2。

checkBox2.setOnCheckedChangeListener(this) ; 
+0

感謝我幾乎忘了這行代碼,但它仍然沒有奏效 – user1413188 2012-07-10 08:44:12