2013-02-07 3 views
2

내가 안드로이드에 아주 새로운 해요 안드로이드 선택 나는이 같은 XML이지고 :모든 라디오 버튼은 라디오 그룹에서

<RadioGroup 
     android:id="@+id/cardRadioGroup" 
     android:layout_width="wrap_content" 
     android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="35dp" 
     android:layout_alignTop="@+id/cardEditText"> 
</RadioGroup> 

내가 생성하는 내 코드를 사용하여이 XML을 팽창 tyring 해요을 데이터 모델에 따라 원하는만큼의 라디오 버튼을 사용할 수 있습니다.

내가 사용하는 코드는 (for 루프 안에있는)입니다 : 예상대로이가 작동

 LayoutInflater inflater = this.getLayoutInflater(); 
     View currentView = inflater.inflate(R.layout.card_payment_content_node,null); 

     RadioGroup rg = (RadioGroup) currentView.findViewById(R.id.cardRadioGroup); 
     RadioButton rb = new RadioButton(this); 
     //set radiobutton properties 
     rb.setText(entry.getKey()); 
     rb.setId(++radioButtonIdCounter); 

     rg.addView(rb); 

     //add to view 
     parent.addView(currentView); 

. 하지만 문제는 내 장치에서 한 번에 여러 라디오 버튼을 선택할 수 있다는 것입니다.

왜 이런 일이 발생하는지 잘 모르겠습니다. 내가 실수를 저지르고있는 곳?

미리 감사드립니다.

+0

새로 생성 된 라디오 버튼을 라디오 그룹에 어디에 추가합니까? –

+0

나는 추가하지 않았다. 어떻게 추가 할 수 있습니까? Android는'cardRadioButton'이'cardRadioGroup'이라는 이름의'RadioGroup' 안에 있다는 것을 모릅니다. – sriram

+0

@siriam 어떻게 XML 요소를 동적으로 XML에 추가 할 수있을 것으로 기대하십니까? 특별한 루핑 태그는 결과 객체에 개별 속성을 제공 할 수 있어야합니다. XSLT를 사용할 수는 있지만 Android는 레이아웃 설명에 XSLT를 적용하지 않습니다. 당신은 수동으로 할 수 있지만, 내 대답에 설명 된대로 버튼을 프로그래밍 방식으로 추가하는 것이 더 효율적입니다. –

답변

7

모든 버튼의 ID는 동일합니다. 그래서 그들이 일률적으로 행동합니다.

레이아웃을 한 번만 팽창시킵니다. cardRadioGroup을 식별하고 코드를 루핑하여 단추에 고유 한 ID를 생성함으로써 프로그래밍 방식으로 단추를 추가해야합니다.

그룹에 라디오 버튼을 추가하려면 RadioGroup.addview()을 사용하십시오.

라디오 버튼을 만들려면 RadioButton의 생성자 중 하나를 사용하고 필요한 경우 추가 속성을 설정합니다.

+0

@siriam SOUND는 여전히 XML에 라디오 버튼이 있거나 항상 동일한 버튼을 추가합니다. 너는 그렇게 할 수 없다. XML의 _no_ 라디오 버튼으로 시작하고 RadioButton 생성자를 통해 _all_을 생성하십시오. 그들은 개별적인 대상이 될 필요가 있습니다. –

+0

나는이 방법으로'RadioButton rb = new RadioButton (this)'을 만들고 이것을 내 xml의 radiobutton 그룹에 추가했다. 그러나 모든 버튼이 선택된 동일한 문제가 다시 나타납니다! – sriram

+0

@ sriram 당신은 그들 모두에게 다른 ID를 할당해야합니다. 근본 문제라고 했지, 기억하지? –

관련 문제