>我有一个单选组,我动态填充如下:
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();
}
});
希望这对:)有所帮助