Я получаю подтверждение два раза в этом методе, как его избежать?
Когда я нажимаю кнопку даты, получаю диалоговое окно выбора даты и выбираю дату, эта дата будет сохранена в тексте редактирования. на этот раз я выполню проверку даты. означает, что дата меньше текущей даты, на которой будет отображаться предупреждение. На этот раз я получил предупреждение, но отображаются два предупреждения. Как избежать отображения двух предупреждений?
private String setdate() {
int fYear, fMonth, fDay;
final Calendar c = Calendar.getInstance();
fYear = c.get(Calendar.YEAR);
fMonth = c.get(Calendar.MONTH);
fDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(RemindMeDetails.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
try{
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
//for current date
String cdate = formatter.format(new Date());
Date Cdate = formatter.parse(cdate);
//this date id for selected date
String date=(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year).toString();
Date dateD = formatter.parse(date);
if (Cdate.compareTo(dateD)<=0){
onetime_edit_date.setText(date);
}
else{
showmessage("Alert", "date is not lower than current Date");
}
}catch (ParseException e1){
e1.printStackTrace();
}
}
}, fYear, fMonth, fDay );
dpd.show();
return date;
}
1 ответ
Решение
Вы должны написать валидацию в методе showmessage(). Если вы показываете диалоговое окно с предупреждением в методе, то убедитесь, что оно уже отображается или нет... таким образом вы можете справиться с этим. В противном случае используйте логическую переменную.
РЕДАКТИРОВАТЬ
попробуй вот так
AlertDialog alertDialog;
void showmessage(String string, String string2) {
if (alertDialog == null || !alertDialog.isShowing()) {
Builder builder;
builder = new AlertDialog.Builder(this);
builder.setTitle(string);
builder.setMessage(string2);
builder.setPositiveButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog = builder.create();
alertDialog.show();
}
}