2016-08-19 2 views
0

特定のラジオボタンがAndroidに属しているラジオグループを特定することはできますか?Android:特定のRadioButtonはどのRadioGroupに属していますか?

例:

RadioGroup_A 
    - RadioButton_1A 
    - RadioButton_2A 

RadioGroup_B 
    - RadioButton_1B 
    - RadioButton_2B 

私はRadioGroup_Aに属するidetifyし、RadioButton_1Aを持っていますか?

私は、特別なケースのためのトリガーCheckedChangeリスナーを無視するロジックを実装する必要があります。 RadioButtonがその特定のRadioGroupに属していることを知ったときに、1つのRadioGroupに対してのみそれを制限する必要があります。 radioGroup.indexOfChild方法について

おかげ

+0

を適用してくださいあなたの質問の完全な例を説明し、我々はあなたが達成したいかを理解することができますので、より多くのケースを説明してください。 RadioButton_1Aに一意のIDがある場合、そのクリアは常にRadioGroup_Aに属します。 (あなたの問題を解決していない) – Ramit

+0

こんにちはRamit、はいすべてのRadioGroupsとRadioButtonsにはIDがあります(例:android:id = "@ + id/RadioGroup_A"/android:id = "@ + id/RadioButton_1A") – JibW

+0

一意のID、あなたはラジオボタンのonclickでチェックされた変更になっているかもしれないラジオボタンに基づいてラジオボタンを特定したいと思う。したがって、RadioButton_1AとRadioButton_2AにはRadioGroup_Aを直接使用できます。私は私に知られている情報を説明しようとしています。他の賢明なあなたがそのようなアクションを実行する場所を正確に教えて、サンプルコードが優先されます。 – Ramit

答えて

1

何?ドキュメントは、リターンがあること言う:ビューがグループ内に存在しない場合は、グループ内のビューの位置を表す正の整数は、 または-1たぶん

あなたは

かどうかを確認することができますRadioGroupRadioButton終了:

int idx = radioGroup.indexOfChild(radioButton); 

if (idx != -1) 
{ 
    //radioButton is in the radioGroup 
} 
else { 
    //radioButton isnt in the radioGroup 
} 

はそれが役に立てば幸い!

1

私のアプリの1つでは、2つのRadioButon ArrayListsを各グループごとに1つずつ持っていました。レイアウトが拡張された後のonCreate()では、RadioButtonがthis answerで説明されているように各グループに追加されます。

次に、どのArrayListにRadioButtonが含まれているかを確認することで、必要なロジックを実装できます。

1

私は私の解決策

public class MyClass extends Activity implements RadioGroup.OnCheckedChangeListener 
{ 
    RadioGroup rg1,rg2,rg3; 
    public void onCreate(Bundle b) 
    { 
     super.onCreate(b); 
     setContentView(R.layout.main); 


     rg1=(RadioGroup)findViewById(R.id.rg1); 
     rg2=(RadioGroup)findViewById(R.id.rg2); 
     rg3=(RadioGroup)findViewById(R.id.rg3); 


     rg1.setOnCheckedChangeListener(this); 
     rg2.setOnCheckedChangeListener(this); 
     rg3.setOnCheckedChangeListener(this); 

    } 

    @Override 
     public void onCheckedChanged(RadioGroup radioGroup, int i) { 

     if(radioGroup==rg1) 
     { 
      //First RadioGroup Clicked 
      RadioButton radio=(RadioButton)findViewById(i); 
      Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show(); 
     } 

     if(radioGroup==rg2) 
     { 
      //Second RadioGroup Clicked 
      RadioButton radio=(RadioButton)findViewById(i); 
      Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show(); 
     } 

     if(radioGroup==rg3) 
     { 
      //Third RadioGroup Clicked 
      RadioButton radio=(RadioButton)findViewById(i); 
      Toast.makeText(this,radio.getText().toString(),Toast.LENGTH_SHORT).show(); 
     } 
     } 
} 
関連する問題