마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

CheckBox를 한개만 선택되게 하고 싶습니다.

0 추천

체크박스가 2개인데

 

cbNumber = (CheckBox) findViewById(R.id.cbNumber);

cbPeriod = (CheckBox) findViewById(R.id.cbPeriod);

 

cbNumber.setOnCheckedChangeListener(cHandler);

cbPeriod.setOnCheckedChangeListener(cHandler);

 

이렇게 등록을 완료 하였고

 

OnCheckedChangeListener cHandler = new OnCheckedChangeListener() {

 

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

   switch(buttonView.getId()) {

      case R.id.cbNumber

          cbNumber.setChecked(true);

          cbPeriod.setChecked(false);

          Comm.TOAST(getApplicationContext(), "" + 1);

      break;

      case R.id.cbPeriod:

          cbNumber.setChecked(false);

          cbPeriod.setChecked(true);

          Comm.TOAST(getApplicationContext(),"" + 2);

      break;

    }

  }

};

 

위와 같이 소스를 짜면 되야될 것 같은데 왜 ㅜㅜ

잘 안될까요? 한쪽이 체크되어있을 때 한쪽을 클릭하면 해제가 되면서

체크한쪽이 선택되고 토소트가 제대로 떠야 할 것 같은데

 

토스트도 막 2, 1, 2, 1 순서로 뜨더라구요.

선배님들 도와주세요.

Goni2 (770 포인트) 님이 2015년 3월 5일 질문

2개의 답변

+1 추천
생각을 하고 코드를 만드세요.

setChecked함수를 호출하면 onCheckedChanged 함수가 호출되지 않겠어요?

결국 무한반복되겠죠.
익명사용자 님이 2015년 3월 5일 답변
멋진 답변,
개발한답시고 요새 머리를 폼으로 달고 있는 자들이 너무 많네요.
캬.. 인성봐라 모르면 이끌고 도와줄 수 있어야지 비난을..ㅋ
stackoverflow랑 비교되는 부분이다~
우와.. 저렇게 생각하는 사람 참... 대단하시네요 얼마나 대단하시길래 저런 답변을?? 진짜 저런 사람이 사장이라면.. 하... 하긴 깜냥이나 될랑가 모르겠네요.. 그냥 말한마디 친절히 하면 될 것을  둘러보다 하도 기가막힌 댓글이 있길래 달아보네요
당신 멋진 한글이다. 우리는 생각합니다. 아주 큰 두부를 이끄는 미래의 인간들에게, 따라서  owlrock 에서 바란다. 만나기를 우리가
너무 악플이네ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ
+1 추천
onCheckedChanged -> 둘중에 하나 불림 -> setChecked (바뀜) -> onCheckedChanged 이런식이 되는 구조네요

각 케이스에

if (isChecked) {

    cb{다른거}.setChecked(false);

}

이렇게 하시든지 아님

Radio Button 을 쓰세요
mamondebaltob (32,750 포인트) 님이 2015년 3월 5일 답변
...