2017-07-04 78 views
0

我遇到了一个问题无线电检查更改侦听器不工作在android片段,我试图在一个活动内它会正常工作,而我转换成片段它将不给予回应,请帮助我,这是我的代码。RadioGroup不工作在片段android

K06_Away.java

public class K06_Away extends Fragment { 

     private View kf06_view; 
     protected Typeface tfLatoBold,tfLatoMedium,tfLatoRegular; 
     private Button button_kf06_back,button_kf06_next; 
     private TextView txtVw_kf06_resident_away; 
     private EditText edTxt_kf06_visiting_lastname; 
     private RadioGroup radioGp_kf06_resident_away; 
     List<RadioButton> radioButtons = new ArrayList<RadioButton>(); 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      kf06_view = inflater.inflate(R.layout.k06_away, container, false); 

      return kf06_view; 
     } 

     @Override 
     public void onViewCreated(View view, Bundle savedInstanceState) { 
      super.onViewCreated(view, savedInstanceState); 
        configViews(); 
     } 


     private void configViews() { 
      button_kf06_back = (Button) kf06_view.findViewById(R.id.button_kf06_back); 
      button_kf06_next = (Button) kf06_view.findViewById(R.id.button_kf06_next); 
      txtVw_kf06_resident_away= (TextView) kf06_view.findViewById(R.id.txtVw_kf06_resident_away); 

      radioGp_kf06_resident_away = (RadioGroup) kf06_view.findViewById(R.id.radioGp_kf06_resident_away); 
      radioButtons.add((RadioButton)kf06_view.findViewById(R.id.radio_kf06_1_2_hours)); 
      radioButtons.add((RadioButton)kf06_view.findViewById(R.id.radio_kf06_halfday)); 
      radioButtons.add((RadioButton)kf06_view.findViewById(R.id.radio_kf06_allday)); 
      radioButtons.add((RadioButton)kf06_view.findViewById(R.id.radio_kf06_moreday)); 

      configClickListeners(); 
      radioButtonAction(); 



     } 
     private void configClickListeners() { 
      button_kf06_back.setOnClickListener(this); 
      button_kf06_next.setOnClickListener(this); 
     } 
     private void radioButtonAction(){ 
      for (RadioButton button : radioButtons){ 
       button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
        @Override 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
         if (isChecked) processRadioButtonClick(buttonView); 
         String radio_Text = buttonView.getText().toString(); 
         int radio_Id = buttonView.getId(); 
         System.out.println("Selected the Radio:"+radio_Text+", Radio-Id:"+radio_Id); 
        } 
       }); 

      } 
     } 

     private void processRadioButtonClick(CompoundButton buttonView){ 
      for (RadioButton button : radioButtons){ 
       if (button != buttonView) button.setChecked(false); 
      } 

     } 

} 

k06_away.xml

<RadioGroup 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/lLayout_kf06_resident_away" 
      android:id="@+id/radioGp_kf06_resident_away"> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="horizontal" 
       android:baselineAligned="false" 
       tools:ignore="UselessParent"> 
       <LinearLayout 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:orientation="vertical" 
        android:layout_marginLeft="150dp" 
        tools:ignore="RtlHardcoded"> 
        <RadioButton 
         android:id="@+id/radio_kf06_1_2_hours" 
         style="@style/radionbutton" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/label_resident_away_hour_1" 
         android:layout_gravity="left" 
         android:checked="false" 
         android:textSize="25sp" 
         android:paddingStart="20dp" 
         android:layout_marginTop="150dp" 
         android:textColor="@color/colorWhite" 
         tools:ignore="NestedWeights,RtlSymmetry" /> 

        <RadioButton 
         android:id="@+id/radio_kf06_halfday" 
         style="@style/radionbutton" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/label_resident_away_hour_2" 
         android:layout_gravity="left" 
         android:checked="false" 
         android:textSize="25sp" 
         android:textColor="@color/colorWhite" 
         android:paddingStart="20dp" 
         android:layout_marginTop="50dp" 
         tools:ignore="NestedWeights,RtlSymmetry"/> 


       </LinearLayout> 

       <LinearLayout 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:orientation="vertical" 
        android:layout_marginLeft="50dp" 
        tools:ignore="RtlHardcoded"> 
        <RadioButton 
         android:id="@+id/radio_kf06_allday" 
         style="@style/radionbutton" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/label_resident_away_hour_3" 
         android:layout_gravity="left" 
         android:checked="false" 
         android:textSize="25sp" 
         android:textColor="@color/colorWhite" 
         android:paddingStart="20dp" 
         android:layout_marginTop="150dp" 
         tools:ignore="NestedWeights,RtlSymmetry"/> 

        <RadioButton 
         android:id="@+id/radio_kf06_moreday" 
         style="@style/radionbutton" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/label_resident_away_hour_4" 
         android:layout_gravity="left" 
         android:checked="false" 
         android:textSize="25sp" 
         android:textColor="@color/colorWhite" 
         android:paddingStart="20dp" 
         android:layout_marginTop="50dp" 
         tools:ignore="NestedWeights,RtlSymmetry,RtlHardcoded"/> 


       </LinearLayout> 
      </LinearLayout> 
     </RadioGroup> 
+1

调用'onCreateView你'configViews()'方法()' – tahsinRupam

回答

1

1.尝试从onCreateView()调用方法configViews()并传递视图kf06_view作为参数。

2.实施View.OnClickListener处理button_kf06_backbutton_kf06_next click事件。

更新您的K06_Away片段如下:

public class K06_Away extends Fragment implements View.OnClickListener { 

    protected Typeface tfLatoBold,tfLatoMedium,tfLatoRegular; 
    private Button button_kf06_back,button_kf06_next; 
    private TextView txtVw_kf06_resident_away; 
    private EditText edTxt_kf06_visiting_lastname; 
    private RadioGroup radioGp_kf06_resident_away; 
    List<RadioButton> radioButtons = new ArrayList<RadioButton>(); 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View kf06_view = inflater.inflate(R.layout.k06_away, container, false); 

     // Init 
     configViews(kf06_view); 

     return kf06_view; 
    } 

    private void configViews(View view) { 
     button_kf06_back = (Button) view.findViewById(R.id.button_kf06_back); 
     button_kf06_next = (Button) view.findViewById(R.id.button_kf06_next); 
     txtVw_kf06_resident_away= (TextView) view.findViewById(R.id.txtVw_kf06_resident_away); 

     radioGp_kf06_resident_away = (RadioGroup) view.findViewById(R.id.radioGp_kf06_resident_away); 
     radioButtons.add((RadioButton) view.findViewById(R.id.radio_kf06_1_2_hours)); 
     radioButtons.add((RadioButton) view.findViewById(R.id.radio_kf06_halfday)); 
     radioButtons.add((RadioButton) view.findViewById(R.id.radio_kf06_allday)); 
     radioButtons.add((RadioButton) view.findViewById(R.id.radio_kf06_moreday)); 

     configClickListeners(); 
     radioButtonAction(); 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.button_kf06_back: 
       // Do something... 
       break; 
      case R.id.button_kf06_next: 
       // Do something... 
       break; 
     } 
    } 

    private void configClickListeners() { 
     button_kf06_back.setOnClickListener(this); 
     button_kf06_next.setOnClickListener(this); 
    } 

    private void radioButtonAction(){ 
     for (RadioButton button : radioButtons){ 
      button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if (isChecked) processRadioButtonClick(buttonView); 
        String radio_Text = buttonView.getText().toString(); 
        int radio_Id = buttonView.getId(); 
        System.out.println("Selected the Radio:"+radio_Text+", Radio-Id:"+radio_Id); 
       } 
      }); 
     } 
    } 

    private void processRadioButtonClick(CompoundButton buttonView){ 
     for (RadioButton button : radioButtons){ 
      if (button != buttonView) button.setChecked(false); 
     } 
    } 
} 
+0

嘿FAT,我为我的问题得到了一个解决方案,实际的原因是我的背景屏幕颜色和重音颜色相同,所以视图无法显示选择。谢谢你的努力,对不起,大脑褪色。 –

+0

非常欢迎亲爱的。快乐编码:) – FAT

1

RadioGroup中直接包含仅单选按钮,没有其他的布局,如果添加的LinearLayout里面RadioGroup中,它不是work.Directly使用outLineLayout在Radiogroup中添加Radiobuttons,它们将工作。

+0

我对平板电脑10寸平板电脑屏幕的设计要求。除了这个设计之外,还有其他的可能性。 –

+0

你必须添加每个RadioButton clicklistner,然后使用这个clicklistner你已经设置了其他RadioButton取消选中并单击RadioButton cheked。 –