我确实有一个片段,其中包含一个包含单个按钮的布局。我在radiogroup
方法中动态添加了radiobuttons
和onCreateView()
。但问题出在onclicklistener
的那个按钮。在检索radiobutton
中已检查radioGroup
的文本时,我会收到nulpointerexception
。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.variant_choose,null);
Button button = (Button) v.findViewById(R.id.apply_variant_button);
LinearLayout ll = (LinearLayout) v.findViewById(R.id.layout_for_radiobuttons_in_variants);
final RadioGroup rg = new RadioGroup();
rg.setId(View.generateViewId());
rg.setOrientation(LinearLayout.HORIZONTAL);
RadioButton rb[] = new RadioButton[5];
for(int j=0;j<5;j++){
rb[j] = new RadioButton(getActivity());
rb[j].setId(View.generateViewId());
rb[j].setText(j);
rg.addView(rb[j]);
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RadioButton rb1 = (RadioButton) v.findViewById(rg.getCheckedRadioButtonId());
String str1 = (String) rb1.getText();
}
});
return v;
}
查看v包含动态创建的radiogroup
和按钮onCreateView
。但后来在onclicklistener
情况并非如此。它只包含在xml文件中定义的按钮?这可能是什么原因?如何获取已检查radiobutton
的文字?
答案 0 :(得分:0)
我相信你的RadioButton
未经检查RadioGroup
因此rg.getCheckedRadioButtonId()
返回-1
,然后findViewById
返回null
}。
填充数组后尝试rb[0].setChecked(true);
之类的内容。