1
私の質問は、同じオプションを2度選択したくないということです。 1回目にクリックすると、無効にする必要があります。後で別のアイテムを選択すると、無効になっているアイテムを有効にする必要があります。それをどうすれば実現できますか?alertdialogで項目を有効または無効にする方法
public class AddDriverStateDialog extends DialogFragment {
private static AddDriverStateDialog addDriverStateDialog;
// Data references
private int DRIVER_STATE = 0;
private final String[] items = {"On Duty", "Off Duty", "Sleeper", "Driving","Yard Move","Personal Conveyance"};
private ItemAdapter itemAdapter;
// UI References
private View view;
private RadioRealButtonGroup radioButtonGroup;
private EditText note,edittime;
Calendar calendar;
private MainActivity mainActivity;
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(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initialise UI elements
view = LayoutInflater.from(mainActivity).inflate(R.layout.dialog_add_driver_state, null);
radioButtonGroup = (RadioRealButtonGroup) view.findViewById(R.id.radioGroup_dialog_addDriverState_driverStates);
note = (EditText) view.findViewById(R.id.et_dialog_addDriverState_note);
//edittime= (EditText)view.findViewById(R.id.et_dialog_addDriverState_time);
calendar = Calendar.getInstance();
// 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 = DriverState.STATE_OFFLINE;
break;
case R.id.radioBtn_dialog_addDriverState_onDuty:
DRIVER_STATE = DriverState.STATE_ONLINE;
break;
case R.id.radioBtn_dialog_addDriverState_sleeperBerth:
DRIVER_STATE = DriverState.STATE_SLEEPER;
break;
case R.id.radioBtn_dialog_addDriverState_driving:
DRIVER_STATE = DriverState.STATE_DRIVING;
break;
case R.id.radioBtn_dialog_addDriverState_yard_move:
DRIVER_STATE = DriverState.STATE_YARD_MOVE;
break;
case R.id.radioBtn_dialog_addDriverState_personal_conveyance:
DRIVER_STATE=DriverState.STATE_PERSONAL_CONVEYANCE;
break;
}
}
});
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(mainActivity)
.setTitle("Add Event")
.setCancelable(false)
.setView(view)
.setPositiveButton("Log Event", 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();
}
}
boolを使用してください。オプションをクリックするとfalseに設定されます。そのボタンが偽の場合は無効にし、無効にした場合は無効にします。最も簡単な方法 – DroiDev