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

How to display a text when the radio button clicked?

所以我有一个带有 2 个单选按钮 的单选组,当用户 select 第一个时,它将在单选组下显示文本,如果用户 select是第二个,它将在同一区域显示不同的消息。用 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

        }
    }
}

试试这个

 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");
            }
        }
    });

您需要为单选按钮定义 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");
                }
            });

由于 RadioButton 扩展了 Button class, 您可以实现 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);
}

@编辑

如果 RadioGroup 和相应的 RadioButtons 在 Fragment 布局内,您应该使用 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);