2011-11-30 7 views
76

RadioGroupの中に2つのRadioButtonがあります。 RadioButtonにはOnClickListenerを設定します。どのRadioButtonがクリックされたかに応じて、EditTextのテキストを変更したいと思います。どうすればこれを達成できますか?これはAndroidのRadioButtonでOnClickListenerを設定するにはどうすればよいですか?

RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton); 
rb.setOnClickListener(first_radio_listener); 

OnClickListener first_radio_listener = new OnClickListener(){ 
public void onClick(View v) { 
    //Your Implementaions... 
} 
}; 

答えて

180

...あなたを助ける

+0

私のために働いていなかったので、Eclipseは@Overrideを追加し、それを修正することを提案しました。ありがとう –

+0

私はradiogroupを使用していますが、xmlの直接の親でなければradiogroupを使用し、この愚かなラジオボタンは中央に揃えることができないので直接親として保持しません。 –

+0

RadioGroupタグの下に** android:gravity = "center" **をxmlに入れてラジオボタンをセンタリングすることができます。 @RudolfRein – OuuGiii

35

希望は私がより良い方法がRadioGroupを使用してViewを変更し、更新するには、この上のリスナーを設定することだと思うだろうそれに応じて(2人、3人、4人などのリスナーを節約できます)。

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);   
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
     } 
    }); 
+3

場合によっては、3つの別々のハンドラを持つことが明確になります。+1 –

+1

魅力的なように働いて、クリックリスナーの最後のかっこの後ろにセミコロンを追加することを忘れないでください。 – inVINCEable

7

また、XMLレイアウトからリスナーを追加することができます:あなたの<RadioButton/>タグでandroid:onClick="onRadioButtonClicked"を。

<RadioButton android:id="@+id/radio_pirates" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/pirates" 
    android:onClick="onRadioButtonClicked"/> 

詳細はAndroid developer SDK- Radio Buttonsを参照してください。

20
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
      RadioButton rb=(RadioButton)findViewById(checkedId); 
      textViewChoice.setText("You Selected " + rb.getText()); 
      //Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
6

念のために他の誰かが受け入れ答えでstruggelingた:異なるOnCheckedChangeListener-インターフェースがあります

。 CheckBoxが変更されたかどうかを調べるために、最初に追加しました。

import android.widget.RadioGroup.OnCheckedChangeListener; 

リッキーからスニペットを追加VS

import android.widget.CompoundButton.OnCheckedChangeListener; 

Iエラーを有していた:

型RADIOGROUPのメソッドsetOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener)は引数に適用されません(新しいCompoundButton.OnCheckedChangeListener(){})

はアリからの回答で固定することができます:質問を約ラジオボタンがクリックされたを検出して

new RadioGroup.OnCheckedChangeListener() 
16

、これはあなたがこの以来

final RadioGroup radio = (RadioGroup) dialog.findViewById(R.id.radioGroup1); 
     radio.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 

       View radioButton = radio.findViewById(checkedId); 
       int index = radio.indexOfChild(radioButton); 

       // Add logic here 

       switch (index) { 
       case 0: // first button 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       case 1: // secondbutton 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       } 
      } 
     }); 
2

をクリックされたボタン得ることができる方法であります質問はJavaに固有のものではありません。あなたができることを追加したいと思います。Kotlin

radio_group_id.setOnCheckedChangeListener({ radioGroup, optionId -> { 
     when (optionId) { 
      R.id.radio_button_1 -> { 
       // do something when radio button 1 is selected 
      } 
      // add more cases here to handle other buttons in the RadioGroup 
     } 
    } 
}) 

ここでradio_group_idは、当該RadioGroupのandroid:idと割り当てられています。この方法を使用するには、アクティビティのKotlinファイルにkotlinx.android.synthetic.main.your_layout_name.*をインポートする必要があります。また、radioGroupのlambdaパラメータが未使用の場合は、Kotlin 1.1から_(アンダースコア)に置き換えることができます。

関連する問題