获取与单选组中单选按钮关联的文本



>我有一个单选组,我动态填充如下:

        RadioGroup ll = new RadioGroup(this);
        ll.setOrientation(RadioGroup.VERTICAL);
        for (int i = 1; i <= repItem.length; i++) {
            RadioButton rdbtn = new RadioButton(this);
            rdbtn.setId((row * 2) + i);
            rdbtn.setText(repItem[i-1]);
            ll.addView(rdbtn);
        }
        ((RadioGroup) findViewById(R.id.radiogroupchoi)).addView(ll);

我得到一个单击事件,如下所示,我想在其中捕获单选组中关联的选定单选按钮的文本。但它给了我空指针例外。有什么帮助吗?

        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id) {
            RadioGroup rChoi=(RadioGroup) findViewById(R.id.radiogroupchoi);
            RadioButton butChoi=(RadioButton) findViewById(rChoi.getCheckedRadioButtonId());
            Toast.makeText(getApplicationContext(),butChoi.getText(), Toast.LENGTH_SHORT).show();
        }
       });

可以将单选按钮直接添加到布局中的单选按钮组中,而不是创建新的单选按钮并将其作为子视图添加到现有单选按钮。因此,只需找到 RadioGroup 并向其添加 RadioButtons,如下所示:

    RadioGroup ll = (RadioGroup) findViewById(R.id.radiogroupchoi);
    ll.setOrientation(RadioGroup.VERTICAL);
    for (int i = 1; i <= repItem.length; i++) {
        RadioButton rdbtn = new RadioButton(this);
        rdbtn.setId((row * 2) + i);
        rdbtn.setText(repItem[i-1]);
        ll.addView(rdbtn);
    }

NullPointerException可能是因为在R.id.radiogroupchoi中没有选中的RadioButton,选中的RadioButton实际上位于您创建并作为子视图添加到其中的RadioGroup中。

将你的代码改为这个 -

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id) {
            RadioGroup rChoi=(RadioGroup) findViewById(R.id.radiogroupchoi);
            RadioButton butChoi=rChoi.findViewById(rChoi.getCheckedRadioButtonId());
            Toast.makeText(getApplicationContext(),butChoi.getText(), Toast.LENGTH_SHORT).show();
        }
       });

希望这对:)有所帮助

最新更新