2017-12-01 24 views
-3

라디오 그룹에 4 개의 라디오 버튼이있는 MCQ 앱을 만들었습니다. 문제는 하나의 라디오 버튼을 선택하고 그 때 다른 세 가지 라디오 버튼 선택을 비활성화하려는 것입니다. 하나의 라디오 버튼 만이 다른 라디오 버튼 선택을 선택하고 비활성화합니다. 친절하게 도와주세요. 저는 여러분 모두에게 매우 감사 할 것입니다.라디오 버튼 선택을 처리 할 수 ​​없음

---------- 

Xml File 

<RadioGroup 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/radioGroup1"> 
//These are four radio buttons from which i have to select one radio button and selection of other three radio buttons must be disabled. 
     <RadioButton 
      android:id="@+id/choice1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="5dp" 
      android:background="@android:color/darker_gray" 
      android:gravity="left|center_vertical" 
      android:onClick="onClick" 
      android:padding="4dp" 
      android:text="A" 
      android:textColor="#000000" 
      android:textSize="16dp" /> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="B" 
     android:onClick="onClick" 
     android:background="@android:color/darker_gray" 
     android:textColor="#000000" 
     android:padding="4dp" 
     android:textSize="16dp" 
     android:gravity="left|center_vertical" 
     android:layout_marginBottom="5dp" 
     android:id="@+id/choice2"/> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="C" 
     android:onClick="onClick" 
     android:background="@android:color/darker_gray" 
     android:textColor="#000000" 
     android:padding="4dp" 
     android:textSize="16dp" 
     android:gravity="left|center_vertical" 
     android:layout_marginBottom="5dp" 
     android:id="@+id/choice3"/> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="D" 
     android:onClick="onClick" 
     android:background="@android:color/darker_gray" 
     android:textColor="#000000" 
     android:padding="4dp" 
     android:textSize="16dp" 
     android:gravity="left|center_vertical" 
     android:layout_marginBottom="5dp" 
     android:id="@+id/choice4" /> 
</RadioGroup> 

---------- 

Java File: 
mQuestionView = (TextView) findViewById(R.id.question); 
     mButtonChoice1 = (RadioButton) findViewById(R.id.choice1); 
     mButtonChoice2 = (RadioButton) findViewById(R.id.choice2); 
     mButtonChoice3 = (RadioButton) findViewById(R.id.choice3); 
     mButtonChoice4 = (RadioButton) findViewById(R.id.choice4); 
} 
    //Java file with only onclick button code: 
public void onClick(View view) { 
      Button answer = (Button) view; 
      // Is the button now checked? 
      //here must be the code of my problem 
     } 

답변

0

라디오 그룹을 사용하지 않도록 설정하려면 아래 코드를 시도하십시오. 작동하지 않으면 루핑을 시도하십시오.

RadioGroup radioGroup = (RadioGroup)findViewById (R.id.radioGroup1); 
radioGroup.setOnCheckedChangedListener (new OnCheckedChangedListener(){ 
public void onCheckedChanged(RadioGroup group, int checkedId) 
{ 
    if (checkedId == R.id.choice1) 
    group.setEnabled(false); 
}else if(/*other conditions here*/) 
}); 

setEnabled()가 작동하지 않는 경우, 그래서 당신은 그것을 loops through each RadioButtonradio0 확인시 귀하의 코드를 변경 시도해야합니다 :

if (checkedId == R.id.choice1){ 

    //radio0 is checked save the data 

    for(int i = 0; i < group.getChildCount(); i++){ 
      ((RadioButton)rg1.getChildAt(i)).setEnabled(false); 
     } 
}else if(/*other conditions here*/){ 

     for(int i = 0; i < group.getChildCount(); i++){ 
      ((RadioButton)rg1.getChildAt(i)).setEnabled(false); 
     } 
} 
+0

여기에 무엇을 넣었습니까? if (checkedId == R.id.radio0) radio0이 (가) 내 코드에 없습니까? –

+0

radio0이 선택 1입니다. 나는 코드를 변경했다. 그냥 확인하십시오 –

+0

4 개의 선택 사항 인 choice1, choice2, choice3 및 choice4를 모두 사용하여이 코드를 작성해야합니까? –

0
가 당신을 요구하고 있지만, 내가 무슨 생각 임 꽤 확실하지 입니다

해결책 :

public void onClick(View view) 
{ 
    ArrayList<Integer> ids = new ArrayList<Integer>(); 
    ids.add(mButtonChoice1.getId()); 
    ids.add(mButtonChoice2.getId()); 
    ids.add(mButtonChoice3.getId()); 
    ids.add(mButtonChoice4.getId()); 
    for(Integer i : ids) 
    { 
     if(i!= view.getId()) 
      ((RadioButton) findViewById(i)).setEnabled(false); 
    } 
} 
+0

나는 그것이 진절머리 나는 일을 알고 있지만 작동 할 수도 있습니다. –

+0

작동하지만 다음 질문을 클릭하면 라디오 버튼이 재설정되지 않고 이전 mcq 질문과 달라집니다. –

+0

무엇을할까요? with –