gpt4 book ai didi

java - RadioButton 自行取消选中

转载 作者:行者123 更新时间:2023-12-02 02:24:32 25 4
gpt4 key购买 nike

我正在开发一个订单应用程序。如果实际时间在开放时间,则应将 rdi_now 的可见性设置为可见,否则设置为消失,因此用户在关闭时间只有选择预购的选项,但 rdi_preorder 没有做应该做的事情。如果我在取消时单击日期选择器或时间选择器,则 rdi_preorder 将被取消选中。没错。这应该发生。不应该发生的情况是,如果单击“取消”后,并尝试再次检查 rdi_preorder,它会在 0.2 秒内进行检查,然后再次取消选中,但日期和时间选择器对话框将打开,我可以设置时间并在中显示设置的时间txt_时间。但 rdi_preorder 仍未选中。我在代码中找不到问题。

private void initView(View view) {
rdi_delivery = (RadioButton) view.findViewById(R.id.rdi_delivery);
rdi_pickup = (RadioButton) view.findViewById(R.id.rdi_pickup);
rdi_now = (RadioButton) view.findViewById(R.id.rdi_now);
rdi_preorder = (RadioButton) view.findViewById(R.id.rdi_preorder);

txt_time = (TextView) view.findViewById(R.id.txt_time);


rdi_preorder.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {



final Calendar c = Calendar.getInstance();
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMin = c.get(Calendar.MINUTE);
final int currentHour = c.get(Calendar.HOUR_OF_DAY);
final int currentMinute = c.get(Calendar.MINUTE);
final int date = c.get(Calendar.DAY_OF_MONTH);
final int month = c.get(Calendar.MONTH);
final int year = c.get(Calendar.YEAR);


final TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(),
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hour, int min) {

selectedHour = hour;
selectedMin = min;

if (rdi_pickup.isChecked()) {
if (checkOpenTime(selectedHour, selectedMin))
if ((selectedDate == date && selectedMonth == month && selectedYear == year) &&
selectedHour * 60 + selectedMin < (currentHour * 60 + currentMinute + 20)) {
Toast.makeText(getContext(), "Bitte bestellen Sie min. 20min vorraus!", Toast.LENGTH_SHORT).show();
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);
rdi_preorder.setChecked(false);
} else {
time_preorder = String.format("%2s:%2s %2s.%2s.%4s", selectedHour, selectedMin, selectedDate, selectedMonth, selectedYear);
txt_time.setVisibility(View.VISIBLE);
txt_time.setText(new StringBuilder("fur ").append(time_preorder).toString());

EventBus.getDefault().postSticky(new EnableButtonNext(true));


}

else {
Toast.makeText(getContext(), "Bitte beachten Sie unsere Öffnungszeiten!", Toast.LENGTH_SHORT).show();
rdi_preorder.setChecked(false);
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);
}
} else if (rdi_delivery.isChecked()) {
if (checkOpenTime(selectedHour, selectedMin)) {
if ((selectedDate == date && selectedMonth == month && selectedYear == year) &&
selectedHour * 60 + selectedMin < (currentHour * 60 + currentMinute + 45)) {
Toast.makeText(getContext(), "Bitte bestellen Sie min. 45min vorraus!", Toast.LENGTH_SHORT).show();
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);
rdi_preorder.setChecked(false);
} else {
time_preorder = String.format("%2s:%2s %2s.%2s.%4s", selectedHour, selectedMin, selectedDate, selectedMonth, selectedYear);
txt_time.setVisibility(View.VISIBLE);
txt_time.setText(new StringBuilder("fur ").append(time_preorder).toString());

EventBus.getDefault().postSticky(new EnableButtonNext(true));
}
} else {
Toast.makeText(getContext(), "Bitte beachten Sie unsere Öffnungszeiten!", Toast.LENGTH_SHORT).show();
rdi_preorder.setChecked(false);
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);
}

}
}
}, mHour, mMin, true);


timePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);


}
});

final Calendar nextDate = Calendar.getInstance();
if (rdi_pickup.isChecked())
nextDate.add(Calendar.DATE, 7);
else
nextDate.add(Calendar.DATE, 14);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int date) {
selectedDate = date;
selectedMonth = month;
selectedYear = year;

timePickerDialog.show();
}
}, year, month, date);

datePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
if (rdi_now.getVisibility() == View.VISIBLE)
rdi_now.setChecked(true);

}
});
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
datePickerDialog.getDatePicker().setMaxDate(nextDate.getTimeInMillis());
datePickerDialog.show();

}

}

});


rdi_now.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
EventBus.getDefault().postSticky(new EnableButtonNext(true));
}
txt_time.setVisibility(View.GONE);
}
});

rdi_pickup.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
}
});
rdi_delivery.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
EventBus.getDefault().postSticky(new EnableButtonNext(true));
}
}
});

最佳答案

您有一些 if 语句,其形式为:

...
rdi_preorder.setChecked(false);
} else {
// there is no code to set preorder to true, add the following line
rdi_preorder.setChecked(true); //now when time is in the future preorder is checked

尝试将其添加到您的 if 语句中

关于java - RadioButton 自行取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com