2012-07-10 2 views
0

가 나는에 만들 방법이 확인란을 추가확인란

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

+0

yeeees 그게 효과가 있었지만 나는 함께 점검 할 때 또 다른 문제에 직면했다. 그리고 나서 첫 번째 체크 박스를 선택 취소하면 그림이 제거되지 않는다. – user1413188

+0

제발 도와주세요 :) – user1413188

0

체크 박스 2에도 checkedchangelistener를 추가해야합니다.

checkBox2.setOnCheckedChangeListener(this) ; 
+0

덕분에 내가 코드 줄을 잊고되었다하지만 여전히 – user1413188