2017-07-28 18 views
0

我有警報對話框,其中包括無線電組,我的問題是如何啓用&禁用單選按鈕,當我點擊一個單選按鈕時,它應該禁用,直到,點擊下一個單選按鈕。請幫助我。如何啓用和禁用對話框中的Radiogroup項目內的單選按鈕

public class AddDriverStateDialog extends DialogFragment { 
    private static AddDriverStateDialog addDriverStateDialog; 

    // Data references 
    private int DRIVER_STATE = 0; 
    private Calendar calendar; 
    private int year, month, day, hours, minutes; 
    private SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy"); 
    private SimpleDateFormat timeFormat = new SimpleDateFormat("h:mm a"); 


    // UI References 
    private View view; 
    public LinearLayout editableDetails; 
    private RadioRealButtonGroup radioButtonGroup; 
    private RadioRealButton radioButton_offduty,radioButton_onduty,radioButton_sleeper,radioButton_driving,radioButton_yard,radioButton_personal; 
    private EditText note, et_date, time, odoReading, location; 
    private CheckBox insertLog, switchDriver; 
    private Spinner spinner; 

    private MainActivity mainActivity; 

    // Picker Dialogs 
    private DatePickerDialog datePickerDialog; 
    private TimePickerDialog timePickerDialog; 

    public static AddDriverStateDialog newInstance(MainActivity mainActivity) { 
     if (addDriverStateDialog == null) { 
      addDriverStateDialog = new AddDriverStateDialog(); 
     } 
     addDriverStateDialog.mainActivity = mainActivity; 
     return addDriverStateDialog; 
    } 


    @Override 
    public void onResume() { 
     ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes(); 
     params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
     super.onResume(); 
    } 

    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Initialise UI elements 
     view = LayoutInflater.from(mainActivity).inflate(R.layout.dialog_add_driver_state, null); 
     editableDetails = (LinearLayout) view.findViewById(R.id.ll_addDriverState_editableDetails); 
     radioButtonGroup = (RadioRealButtonGroup) view.findViewById(R.id.radioGroup_dialog_addDriverState_driverStates); 
     note = (EditText) view.findViewById(R.id.et_dialog_addDriverState_note); 
     et_date = (EditText) view.findViewById(R.id.et_dialog_addDriverState_date); 
     time = (EditText) view.findViewById(R.id.et_dialog_addDriverState_time); 
     odoReading = (EditText) view.findViewById(R.id.et_dialog_addDriverState_odometer); 
     location = (EditText) view.findViewById(R.id.et_dialog_addDriverState_location); 
     insertLog = (CheckBox) view.findViewById(R.id.chkBox_addDriverStare_insertLog); 
     switchDriver = (CheckBox) view.findViewById(R.id.chkBox_addDriverStare_switchDriver); 
     radioButton_offduty = (RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_offDuty); 
     radioButton_onduty=(RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_onDuty); 
     radioButton_sleeper=(RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_sleeperBerth); 
     radioButton_driving=(RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_driving); 
     radioButton_yard=(RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_yard_move); 
     radioButton_personal=(RadioRealButton) view.findViewById(R.id.radioBtn_dialog_addDriverState_personal_conveyance); 
     // Initialise Data references 
     calendar = Calendar.getInstance(); 

     // Get current dateTime and time 
     year = calendar.get(Calendar.YEAR); 
     month = calendar.get(Calendar.MONTH); 
     day = calendar.get(Calendar.DATE); 
     hours = calendar.get(Calendar.HOUR); 
     minutes = calendar.get(Calendar.MINUTE); 


     // Initialise data references 
     datePickerDialog = new DatePickerDialog(mainActivity, 0, new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
       calendar.set(year, month, dayOfMonth); 
       et_date.setText(dateFormat.format(calendar.getTime())); 
      } 
     }, year, month, day); 

     timePickerDialog = new TimePickerDialog(mainActivity, 0, new TimePickerDialog.OnTimeSetListener() { 
      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
       calendar.set(Calendar.MINUTE, minute); 
       time.setText(timeFormat.format(calendar.getTime())); 
      } 
     }, hours, minutes, false); 


     // UI Interaction listeners 
     /* Driver State Selection Listener */ 
     radioButtonGroup.setOnClickedButtonListener(new RadioRealButtonGroup.OnClickedButtonListener() { 
      @Override 
      public void onClickedButton(RadioRealButton button, int position) { 
       switch (button.getId()) { 
        case R.id.radioBtn_dialog_addDriverState_offDuty: 

         DRIVER_STATE = DriverLog.STATE_OFFLINE; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_onDuty: 
         DRIVER_STATE = DriverLog.STATE_ONLINE; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_sleeperBerth: 
         DRIVER_STATE = DriverLog.STATE_SLEEPER; 
         break; 

        case R.id.radioBtn_dialog_addDriverState_driving: 
         DRIVER_STATE = DriverLog.STATE_DRIVING; 
         break; 
        case R.id.radioBtn_dialog_addDriverState_yard_move: 
         DRIVER_STATE = DriverLog.STATE_YARD_MOVE; 
         break; 
        case R.id.radioBtn_dialog_addDriverState_personal_conveyance: 
         DRIVER_STATE = DriverLog.STATE_PERSONAL_CONVEYANCE; 
         break; 
       } 

      } 

     }); 

     et_date.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       datePickerDialog.show(); 
      } 
     }); 

     time.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       timePickerDialog.show(); 
      } 
     }); 

     insertLog.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        editableDetails.setVisibility(View.VISIBLE); 
       } else { 
        editableDetails.setVisibility(View.GONE); 
       } 
      } 
     }); 

     switchDriver.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        radioButton_onduty.setVisibility(View.GONE); 
        radioButton_driving.setVisibility(View.GONE); 
        radioButton_yard.setVisibility(View.GONE); 
        radioButton_personal.setVisibility(View.GONE); 
        radioButtonGroup.setOnClickedButtonListener(new RadioRealButtonGroup.OnClickedButtonListener() { 
         @Override 
         public void onClickedButton(RadioRealButton button, int position) { 
          switch (button.getId()) { 
           case R.id.radioBtn_dialog_addDriverState_offDuty: 
            button.setVisibility(View.VISIBLE); 
            DRIVER_STATE = DriverLog.STATE_OFFLINE; 
            break; 


           case R.id.radioBtn_dialog_addDriverState_sleeperBerth: 
            button.setVisibility(View.VISIBLE); 
            DRIVER_STATE = DriverLog.STATE_SLEEPER; 
            break; 

          } 
         } 

        }); 
       } 

      } 
     }); 
    } 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(mainActivity) 
       .setTitle("Update Driver Log") 
       .setCancelable(false) 
       .setView(view) 
       .setPositiveButton("Accept", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         mainActivity.updateDashboard(DRIVER_STATE, note.getText().toString()); 
        } 
       }) 
       .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dismiss(); 
        } 
       }) 
       .create(); 
    } 
} 
+0

所以,你要爲爲例單擊radioButton_offduty和desable所有其他人呢? –

+0

我想radioButton_offduty應該被禁用,直到我選擇另一個按鈕 – shashidhar

回答

0

所以做你whant做什麼:

radioButtonGroup.setOnClickedButtonListener(new RadioRealButtonGroup.OnClickedButtonListener() { 
      @Override 
      public void onClickedButton(RadioRealButton button, int position) { 
       switch (button.getId()) { 
        case R.id.radioBtn_dialog_addDriverState_offDuty: 

         DRIVER_STATE = DriverLog.STATE_OFFLINE; 
         radioButton_offduty.setEnabled(false); 
         radioButton_onduty.setEnabled(true); 
         radioButton_sleeper.setEnabled(true); 
         radioButton_driving.setEnabled(true); 
         radioButton_yard.setEnabled(true); 
         radioButton_personal.setEnabled(true); 
         break; 

        case R.id.radioBtn_dialog_addDriverState_onDuty: 
         DRIVER_STATE = DriverLog.STATE_ONLINE; 
         radioButton_offduty.setEnabled(true); 
         radioButton_onduty.setEnabled(false); 
         radioButton_sleeper.setEnabled(true); 
         radioButton_driving.setEnabled(true); 
         radioButton_yard.setEnabled(true); 
         radioButton_personal.setEnabled(true); 
         break; 

        case R.id.radioBtn_dialog_addDriverState_sleeperBerth: 
         DRIVER_STATE = DriverLog.STATE_SLEEPER; 
         radioButton_offduty.setEnabled(true); 
         radioButton_onduty.setEnabled(true); 
         radioButton_sleeper.setEnabled(false); 
         radioButton_driving.setEnabled(true); 
         radioButton_yard.setEnabled(true); 
         radioButton_personal.setEnabled(true); 
         break; 

        case R.id.radioBtn_dialog_addDriverState_driving: 
         DRIVER_STATE = DriverLog.STATE_DRIVING; 
         radioButton_offduty.setEnabled(true); 
         radioButton_onduty.setEnabled(true); 
         radioButton_sleeper.setEnabled(true); 
         radioButton_driving.setEnabled(false); 
         radioButton_yard.setEnabled(true); 
         radioButton_personal.setEnabled(true); 
         break; 
        case R.id.radioBtn_dialog_addDriverState_yard_move: 
         DRIVER_STATE = DriverLog.STATE_YARD_MOVE; 
         radioButton_offduty.setEnabled(true); 
         radioButton_onduty.setEnabled(true); 
         radioButton_sleeper.setEnabled(true); 
         radioButton_driving.setEnabled(true); 
         radioButton_yard.setEnabled(false); 
         radioButton_personal.setEnabled(true); 
         break; 
        case R.id.radioBtn_dialog_addDriverState_personal_conveyance: 
         DRIVER_STATE = DriverLog.STATE_PERSONAL_CONVEYANCE; 
         radioButton_offduty.setEnabled(true); 
         radioButton_onduty.setEnabled(true); 
         radioButton_sleeper.setEnabled(true); 
         radioButton_driving.setEnabled(true); 
         radioButton_yard.setEnabled(true); 
         radioButton_personal.setEnabled(false); 
         break; 
       } 

      } 

     }); 

output

+0

nope,如何使用適配器 – shashidhar

+0

我現在看到適配器 –

+0

你想禁用此方法** switchDriver.setOnCheckedChangeListener()**,我不知道你在哪裏想要禁用按鈕,你可以告訴我嗎?我假設你想要** onclickListener **。 –

相關問題