3

私のアプリケーションでは、プログラムでラジオボタンを設定し、ラジオグループのonCheckedChangedがトリガーされることを期待して、ラジオグループで何かを実行できるようにする必要があります。

プログラムでラジオボタンを設定するコード。

 LayoutInflater inflater = LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
 View view = inflater.inflate(R.layout.footer, null);
 RadioButton btn = (RadioButton)view.findViewById(R.id.footer_btn_course);
 btn.setChecked(true);

そして別の活動では、私は次のようなことをしました:

 public class MainActivity extends ActivityGroup implements RadioGroup.OnCheckedChangeListener{
      protected void onCreate(Bundle savedInstanceState){
            mRadioGroup = (RadioGroup)findViewById(R.id.footer_radio);
            mRadioGroup.setOnCheckedChangeListener(this);
      }

      @Override
      public void onCheckedChanged(RadioGroup group, int checkedId){
            RadioButton btn = (RadioButton)findViewById(checkedId);
            if(btn != null){
                  do_something();
            }
      }
  }

ただし、この方法は機能しないようで、onCheckedChangedが呼び出されることはありませんでした。誰かが私が何をすべきか知っていますか?ありがとう。

4

5 に答える 5

4

初期化時にデフォルトのラジオ チェック ボックスを起動します。clearCheck メソッドですべてをチェック解除に設定します。次に、ハンドラーを設定し、最後にデフォルトを設定すると、ハンドラーが起動します。

itemtypeGroup.clearCheck();

次に、通常と同じようにリスナーを追加します。

mRadioGroup = (RadioGroup)findViewById(R.id.footer_radio);
            mRadioGroup.setOnCheckedChangeListener(this);
            mRadioGroup.clearCheck();

RadioButton btn = (RadioButton)view.findViewById(R.id.footer_btn_course);
btn.setChecked(true);
于 2016-02-09T05:53:11.660 に答える
1

私は同じ問題を抱えていた..

ここに私のアプローチがあります:

 class Myclass extends Activity{
    protected void onCreate(Bundle savedInstanceState) {

    radiogroup = (RadioGroup) findViewById(R.id.radiogroupDecisionUncertain);
            radio1 = (RadioButton) findViewById(R.id.radiobuttonNo_U);
            radio2 = (RadioButton) findViewById(R.id.radiobuttonYes_U);
// declare the onCheckChangedListener
radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub

    if (checkedId == radio1.getId()) { //do something

                } else { // do other thing
                }

            }
        });

radiogroup.check(radio1.getId());


}
}

リスナーを登録した後、チェックされたラジオボタンを設定したことに注意してください..

于 2013-07-19T12:40:31.507 に答える
1

の代わりにbtn.setChecked(true);

これを使用btn.performClick();すると動作します。

于 2013-01-09T06:01:53.817 に答える
1

この問題についてはよくわかりませんが、ラジオ グループ ID を参照していない可能性があります。代わりにこれを試して、効果を確認してください( 内onCreate()):

RadioGroup rdGroup = (RadioGroup) findViewById(R.id.footer_radio);
    rdGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) 
        {
            RadioButton btn = (RadioButton)findViewById(checkedId);
            if(btn != null){
                  do_something();
            }
        }
    });

または、(RadioButton)findViewById(checkedId)null を返す場合もあります。

Spinnerケースがあいまいになったら試してみてください。

于 2012-09-07T02:28:33.657 に答える
0

機能する rOnCheckedChangeListenerの代わりに実装します。RadioGroup.onCheckedChangeListene

public class MainActivity extends ActivityGroup implements OnCheckedChangeListener{
.....

}
于 2013-01-09T05:55:29.923 に答える