单击单选按钮时如何显示文本?

时间:2016-08-17 13:14:34

标签: android android-radiobutton

所以我有一个带 2个单选按钮的广播组,当用户选择第一个要在无线电组下显示文本的广播组时,如果用户选择了第二个#&strong> 39; s将在同一区域显示不同的消息。使用Toast很容易做到这一点,但我不想用Toast消息来做这件事。

public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);


    Button rb1 = (Button) getActivity().findViewById(R.id.radioButton1);
    Button rb2 = (Button) getActivity().findViewById(R.id.radioButton2);

    rb1.setOnClickListener(next_Listener);
    rb2.setOnClickListener(next_Listener);

}

private OnClickListener next_Listener = new OnClickListener() {

    public void onClick(View v) {

        RadioGroup radio_grp=(RadioGroup)getActivity().findViewById(R.id.radio_grp); 
        RadioButton rb1=(RadioButton)getActivity().findViewById(R.id.radioButton1);
        RadioButton rb2=(RadioButton)getActivity().findViewById(R.id.radioButton1);
        if(rb1.isChecked() == true) {

            // display text if they click 1st button

        }

        if (rb2.isChecked()) == true {

            // display text if they click 2nd button

        }
    }
}

3 个答案:

答案 0 :(得分:1)

您需要为单选按钮定义OnCheckedChangeListener。像这样使用它

rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked())
                   textview.setText("Radio Button 1 is checked");
            }
        });



rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(isChecked())
                       textview.setText("Radio Button 2 is checked");
                }
            });

答案 1 :(得分:1)

由于 RadioButton扩展了Button类,因此您可以实现 ClickListener

您还可以实现 onCheckedChangedListener(),但这需要默认情况下不设置任何值。

这是因为onCheckedChangedListener()仅在按钮之间切换时触发,如果已经选择了一个按钮,则不会触发该按钮。

考虑您已定义TextView。您可以使用以下方法执行此操作:

public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    TextView yourTextView = (TextView) findViewById(R.id.your_text_view);

     RadioGroup radio_grp= (RadioGroup)  getView().findViewById(R.id.radio_grp);
     RadioButton rb1 = (RadioButton)  getView().findViewById(R.id.radioButton1);
     RadioButton rb2 = (RadioButton)  getView().findViewById(R.id.radioButton1);

    View.OnClickListener button1Listener = new View.OnClickListener() {
        public void onClick(View v) {
            yourTextView.setText("you have touched button1");
        }
    };

    View.OnClickListener button2Listener = new View.OnClickListener() {
        public void onClick(View v) {
            yourTextView.setText("you have touched button2");
        }
    };
    rb1.setOnClickListener(button1Listener);
    rb2.setOnClickListener(button2Listener);
}

@EDIT

如果RadioGroup和相应的RadioButton位于片段布局中,您应该使用getView().findViewById()而不是getActivity().findViewById()找到他们的观点

将代码更改为:

RadioGroup radio_grp= (RadioGroup)  getView().findViewById(R.id.radio_grp);
RadioButton rb1 = (RadioButton)  getView().findViewById(R.id.radioButton1);
RadioButton rb2 = (RadioButton)  getView().findViewById(R.id.radioButton2);

答案 2 :(得分:0)

试试这个

 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if(checkedId == R.id.radioButton)
            {
               textField.setText("first text");

            }
            else 
             if (checkedId == R.id.radioButton2 ) {

                  textField.setText("second text");
            }
        }
    });