如何获得onclicklistener中动态添加的radiobutton的参考?

时间:2016-12-13 14:59:52

标签: java android android-studio android-fragments

我确实有一个片段,其中包含一个包含单个按钮的布局。我在radiogroup方法中动态添加了radiobuttonsonCreateView()。但问题出在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的文字?

1 个答案:

答案 0 :(得分:0)

我相信你的RadioButton未经检查RadioGroup因此rg.getCheckedRadioButtonId()返回-1,然后findViewById返回null }。

填充数组后尝试rb[0].setChecked(true);之类的内容。