0

Checkbox.OnCheckedChangeListenerとの両方を実装するアクティビティがありますRadioGroup.OnCheckedChangeListener。 グループは両方とも動的に生成され、 と同じものを渡しActivityますlistener

ただし、RadioGroup をクリックすると、RadioGroup.OnCheckChangeListener完全に無視されますが、ここで奇妙になります。発動CheckBox.OnCheckChangeListener!アクティビティを渡す前に RadioGroup リスナーにキャストしようとしましたが、RadioGroup はそれを受け入れることさえできず、CheckBox リスナーだけが通過します。

@Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(subquestion.getQuestionType().equals("MULTIPLE_CHOICE_MULTI_ANSWER")) {
                String selected = buttonView.getText().toString();
                if (subquestion.getAnswer().getDataList() != null) {
                    Answer answer = subquestion.getAnswer();
                    ArrayList<String> checked = answer.getDataList();
                    if (checked.contains(selected)) {
                        checked.remove(selected);
                        Log.d("Checkbox" + buttonView.getId(), "unchecked");
                    } else {
                        checked.add(selected);
                        Log.d("Checkbox" + buttonView.getId(), "checked");
                    }
                } else {
                    ArrayList<String> checked = new ArrayList<String>();
                    checked.add(selected);
                    subquestion.getAnswer().setDataList(checked);
                    Log.d("Checkbox" + buttonView.getId(), "checked");
                }
            }
            if(subquestion.getQuestionType().equals("MULTIPLE_CHOICE_SINGLE_ANSWER")) {
                RadioGroup group = buttonView; //CAN'T BE DONE
                String selected = group.getFocusedChild().getId() + "";
                subquestion.getAnswer().setData(selected);
                Log.d("Radiobutton " + selected + group.getFocusedChild().getId(), "selected");
            }
        }

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
           //This does NOTHING, can't even be passed to the RadioGroup as a listener
        }

buttonView から RadioGroup を取得するにはどうすればよいですか? コードですべてを生成しますが、毎回異なるため、何がクリックされたかを判断するための静的 ID はありません。ラジオボタンにIDを渡してどれがどれであるかを知らせますが、このようにはできません。

チェックボックスに対しては完全に機能しますが、Android が間違ったイベントをスローし、RadioGroup に対して間違ったイベント ハンドラーを使用しているように見えるだけです。

読んでくれてありがとう!

4

1 に答える 1

2

RadioGroup.OnCheckChangeListener に対してこのメ​​ソッドを呼び出し、RadioGroup を引数として渡します。

public void onRadioChangeListener(RadioGroup radioGroup){

    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // write your code here
        }
    });
}
于 2014-12-08T13:35:19.263 に答える