1

ラジオボタンのリストを持つ単純なラジオグループがあります。何らかの理由で、そのグループのラジオ ボタンを選択したときに変更リスナーがトリガーされていることがわかりません。デバッグ モードでは、リスナーが設定され、UI ではラジオ ボタンが正しく選択されていることがわかります。

RadioGroup.OnCheckedChangeListener listener1, listener2;
RadioGroup rg1;
public void radioBtnListener()
{
    rg1 = (RadioGroup) view.findViewById(R.id.answerChoices);
    rg1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.e("Log", "Clicked");

        }
    });
    rg1.setOnCheckedChangeListener(listener1);
    listener1 = new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                Log.e("Log", "changed");
            }
        }
    };
}
4

1 に答える 1

0

両方のコールバックに同じリスナーを使用しているため、最初のリスナーが破棄されています。後者をlistener2に変更すればうまくいくはずです。

これはrg1でlistener1の参照を残します

rg1.setOnCheckedChangeListener(listener1);

そして、これは元のリスナー1を破棄し、新しいリスナーを提供します

listener1 = new RadioGroup.OnCheckedChangeListener() {}

于 2014-02-17T04:14:57.943 に答える