2012-09-22 4 views
3

xml 레이아웃에서 RadioGroup, Button1, Button2가 있습니다. . 사용자가 button1을 클릭하면 여러 개의 라디오 버튼은 프로그래밍 (pocet이 = 라디오 버튼의 개수가 생성되는) 라디오 버튼 항목을 프로그래밍 방식으로 제거하는 방법

final RadioButton[] rb = new RadioButton[pocet];   
    RadioGroup rg = (RadioGroup) findViewById(R.id.MyRadioGroup); 

    radiobuttonCount++; 
    for(int i=0; i<pocet; i++){ 
     rb[i] = new RadioButton(this); 
     rb[i].setText("Radio Button " + radiobuttonCount); 
     rb[i].setId(radiobuttonCount+i);    
     rb[i].setBackgroundResource(R.drawable.button_green);    
     rg.addView(rb[i]);    
    } 

는 내가 뭘하려고하는 것은 이것이다 다를 수 있습니다을 radioGroup (라디오 버튼의 총량에 만들어집니다 때 . 사용자가 내가 텍스트 뷰의 모든 라디오 버튼을 제거하기 위해 선택한 값을 전달할 것,을 radioGroup에서 XY 항목을 선택

목적을 삭제하려면 내가 사용

 public void onCheckedChanged(RadioGroup rGroup, int checkedId) 
     { 
      RadioButton checkedRadioButton = (RadioButton)rGroup.findViewById(checkedId); 
      boolean isChecked = checkedRadioButton.isChecked(); 
      if (isChecked) 
      { 
       RadioGroup rg = (RadioGroup) findViewById(R.id.MyRadioGroup);           

       for (int i=0; i< rg.getChildCount(); i++){ 
        rg.removeViewAt(i); 
       } 
      } 

문제는이 때때로 잘 작동하지만 것입니다 때로는 첫 번째 라디오 버튼 삭제되지 않은 채로 남아 있습니다.

P. 나중에 radiogroup에 다른 항목과 다른 라디오 버튼 양을 제공하는 button2를 추가하려고합니다. 그래서 사용자가 선택을 한 후에 모든 라디오 버튼을 제거해야합니다. 동시에 (rg.getChildCount (에서 아이를 제거하는 동안 하나 이상의 뷰의 아이를 실행할 수 없습니다

for (int i=0; i< rg.getChildCount(); i++){ 
     rg.removeViewAt(i); 
    } 

동안 변경됩니다) :

답변

2

내 첫번째 추측은 코드의이 부분은 나쁜 것입니다 실행)

16

그것은 정말 쉽습니다, 당신은이 작업을 수행 :

rg.removeAllViews(); 

내가 for 루프와 함께 일하지만 모든 RadioButtons를 제거하지 않았기 때문에. 재미있게 보내세요 :)

관련 문제