Я получаю подтверждение два раза в этом методе, как его избежать?

Когда я нажимаю кнопку даты, получаю диалоговое окно выбора даты и выбираю дату, эта дата будет сохранена в тексте редактирования. на этот раз я выполню проверку даты. означает, что дата меньше текущей даты, на которой будет отображаться предупреждение. На этот раз я получил предупреждение, но отображаются два предупреждения. Как избежать отображения двух предупреждений?

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();
    }
}
Другие вопросы по тегам