单击单选按钮时如何显示文本?
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);
所以我有一个带有 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);