Пользовательская группа радио не отвечает на прослушиватель onCheckChanged
Я создал пользовательскую трехкнопочную радиогруппу программно. Однако, когда я использую объект в своем фрагменте и устанавливаю onCheckChangedListener, он, кажется, не отвечает.
Вот код для моей радиогруппы:
public class ThreeButtonRadioGroup extends RadioGroup {
View v;
Context mContext;
LayoutInflater mInflater;
int dim = ((2* DimensionsController.getInstance().getScreenWidth()) / 8)-5;
public ThreeButtonRadioGroup(Context context) {
super(context);
mInflater = LayoutInflater.from(mContext);
init();
}
public ThreeButtonRadioGroup(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
init();
}
RoofUIRadioButton button1, button2, button3;
public void init(){
mInflater = LayoutInflater.from(mContext);
v = mInflater.inflate(R.layout.roof_ui_macro_frequency, this, true);
(button1 = (RoofUIRadioButton) v.findViewById(R.id.button1)).initLayout(dim);
(button2 = (RoofUIRadioButton) v.findViewById(R.id.button2)).initLayout(dim);
(button3 = (RoofUIRadioButton) v.findViewById(R.id.button3)).initLayout(dim);
}
public void setButtonText(String[] buttonText, int preClick) {
button1.setText(buttonText[0]);
button2.setText(buttonText[1]);
button3.setText(buttonText[2]);
switch(preClick){
case 1:
button1.setChecked(true);
break;
case 2:
button2.setChecked(true);
break;
case 3:
button3.setChecked(true);
break;
}
}
public void setButtonText(String[] buttonText) {
button1.setText(buttonText[0]);
button2.setText(buttonText[1]);
button3.setText(buttonText[2]);
}
}
Вот XML, который я раздуваю для группы радио:
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:dividerPadding="20dp"
android:showDividers="middle">
<RadioButton
android:id="@+id/button1"
android:button="@null"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="15dp"
android:textSize="30sp"
android:layout_gravity="center_horizontal|center_vertical"
android:gravity="center_vertical|center_horizontal"
style="@style/circleButton_style"
android:tag="1"
/>
<RadioButton
android:id="@+id/button2"
android:button="@null"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="15dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:textSize="30sp"
android:layout_gravity="center_horizontal|center_vertical"
android:gravity="center_vertical|center_horizontal"
style="@style/circleButton_style"
android:tag="2"
/>
<RadioButton
android:id="@+id/button3"
android:button="@null"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="15dp"
android:textSize="30sp"
android:layout_gravity="center_horizontal|center_vertical"
android:gravity="center_vertical|center_horizontal"
style="@style/circleButton_style"
android:tag="3"
/>
И вот здесь я пытаюсь применить слушатель событий:
microRadioGroup = (ThreeButtonRadioGroup) view.findViewById(R.id.micro_radio_group);
microRadioGroup.setButtonText(new String[]{"Day","Week","Month"}, 3);
microRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
System.out.println("CHECKED BUTTON: ");
}
});
1 ответ
Попробуй вот так.
RadioGroup group=(RadioGroup) findViewById(R.id.radioGroup1);
group.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
// TODO Auto-generated method stub
if(radiobutton1.isChecked())
{
System.out.println("CHECKED BUTTON: ");
}
else if(radiobutton2.isChecked())
{
}
}
});
Также попробуйте использовать проверенный идентификатор.
switch(checkedId) {
case R.id.radioButton1:
break;
case R.id.radioButton2:
break;
case R.id.radioButton3:
break;
}
}
Надеюсь, что это поможет вам!!