2017-07-04 82 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。 –