所以我有一个带 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
}
}
}
答案 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");
}
}
});