2016-02-13 80 views
0

我已經通過編程創建了一個自定義的三按鈕廣播組。但是,當我在片段中使用該對象並設置了onCheckChangedListener時,它似乎沒有響應。自定義廣播組沒有響應onCheckChanged監聽器

這裏是我的radioGroup中的代碼:

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

     } 
    }); 
+0

在第二個代碼示例中,您正在尋找一個id爲'micro_radio_group'的視圖,而在您提供的XML中沒有看到該視圖。你確定事情是按照你期望的方式進行的嗎? –

回答

0

請嘗試這樣。

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()) 
       { 


       } 
     } 
    }); 

也嘗試使用檢查的ID。

switch(checkedId) { 
    case R.id.radioButton1: 
     break; 
    case R.id.radioButton2: 
     break; 
    case R.id.radioButton3: 
     break; 
    } 
} 

希望這會幫助你!

+0

它仍然沒有工作。聽衆無論如何都不會被打電話。也就是說,每當聽者發生任何事件時,我都會嘗試發佈一個打印語句,而且它什麼也不給我。我的按鈕有沒有以某種方式連接到監聽器? –

+0

檢查我編輯的答案,並嘗試調試您的代碼。 –