2016-10-06 1 views
1

私はラジオグループを持っていて、ラジオボタンを動的に追加しています。 Radiogroup内のラジオボタンを選択するためにradiogroup.check(id)を使用しています。ラジオグループチェック(ID)がアンドロイドのsetOnCheckedChangeListenerをトリガーしない

v = new RadioGroup(ctx); 
int count = 0; 
for (String Str : valueStr.get(Position)) { 
    RadioButton rb = new RadioButton(ctx); 
    rb.setId(count); 
    rb.setTag(valueStrID.get(position).get(count)); 
    rb.setText(Str); 
    if (formFieldObject.getFD_ValueField().equals(String.valueOf(Str))) { 
     rbposition = count; 
    } 
    rb.setTextSize(fontSize); 
    ((RadioGroup) v).addView(rb); 
    count++; 
} 

と選択

((RadioGroup) v).check(rbposition); 

ため、このメソッドを呼び出すしかし、これはCheckedchangelistenerをトリガされていません。コードの問題は何ですか?

+1

私たちはどのようにリスナーを設定しますか –

+0

私はチェックメソッドの前にリスナーを試しましたが、運はありませんでした。 –

+0

ラジオボタンに直接設定しようとしましたか? RadioButton b =(RadioButton)findViewById(R.id.yourradiobutton); b.setChecked(true); –

答えて

1

rb.setChecked(true)に電話して確認してください。

v = new RadioGroup(ctx); 
int count = 0; 
for (String Str : valueStr.get(Position)) { 
RadioButton rb = new RadioButton(ctx); 
rb.setId(count); 
rb.setTag(valueStrID.get(position).get(count)); 
rb.setText(Str); 
rb.setTextSize(fontSize); 
((RadioGroup) v).addView(rb); 
if (formFieldObject.getFD_ValueField().equals(String.valueOf(Str))) { 
    rbposition = count; 
    rb.setChecked(true); 
} 


count++; 
} 
+0

以前はsetCheckedメソッドでのみ試してみました。しかし、それは私が次のラジオボタンを選択しているときに問題になります。相互選択プロパティを破棄します。つまり、両方のラジオボタンが選択されているように見えます。 –

+0

はい、このように動作しています。 –

+0

@AnandAsirあなたはこの答えを受け入れることができます:D – Pr38y

1

マイコードがチェックされています。私は、それは

((RadioGroup) v).check(rbposition); 

はその完璧に働いて私のコードを確認してください動作してはならない、あなたは、ラジオグループへのRadioButtonを追加する前にこのメソッドを呼び出すと思います。

public class ThirdActivity extends AppCompatActivity { 

     RadioGroup radioGroup; 
     ArrayList<String>valueStr=new ArrayList<>(); 
    LinearLayout ll; 
     @Override 
     protected void onCreate(@Nullable Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.third_activity); 
    ll= (LinearLayout) findViewById(R.id.linearLayout); 

      valueStr.add("ONE"); 
      valueStr.add("TWO"); 
      valueStr.add("THREE"); 



      radioGroup=new RadioGroup(ThirdActivity.this); 
      radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { 


        switch (checkedId){ 
         case 0: 
          Toast.makeText(ThirdActivity.this,"RadioButton ONE Selected",Toast.LENGTH_LONG).show(); 
          break; 
         case 1: 
          Toast.makeText(ThirdActivity.this,"RadioButton TWO Selected",Toast.LENGTH_LONG).show(); 
          break; 
         case 2: 
          Toast.makeText(ThirdActivity.this,"RadioButton THREE Selected",Toast.LENGTH_LONG).show(); 
          break; 
        } 
       } 
      }); 

      int count = 0; 
      for (int i=0;i<valueStr.size();i++) { 
       RadioButton rb = new RadioButton(ThirdActivity.this); 
       rb.setId(count); 
       rb.setTag(valueStr.get(i)); 
       rb.setText(valueStr.get(i)); 

       rb.setTextSize(16); 

       ((RadioGroup) radioGroup).addView(rb); 
       if(count==1){ 
        radioGroup.check(count); 
       } 

       count++; 
      } 
      ll.addView(radioGroup); 
     } 
    } 
+0

ありがとうございます。私はこれを試してみます –

+0

実際には、私はそれだけこの方法を持っていた。それ以降は変更しました。check()メソッドの前にリスナーを登録する必要があります。 –

0
v = new RadioGroup(ctx); 
int count = 0; 
for (String Str : valueStr.get(Position)) { 
    RadioButton rb = new RadioButton(ctx); 
    rb.setId(count); 
    rb.setTag(valueStrID.get(position).get(count)); 
    rb.setText(Str); 
    rb.setTextSize(fontSize); 
    ((RadioGroup) v).addView(rb); 
    if (formFieldObject.getFD_ValueField().equals(String.valueOf(Str))) { 
     rbposition = count; 
    } 
    count++; 
} 

((RadioGroup) v).setOnCheckedChangeListener(new android.widget.RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup rg, int arg1) { 
     // TODO Auto-generated method stub         
    } 
}); 

((RadioGroup) v).check(rbposition); 

私がチェック()メソッドの前にリスナーを与えている、それが今取り組んでいます。

関連する問題