警报对话框两次出现

时间:2013-11-21 06:01:42

标签: android dialog alert android-alertdialog

我是android新手。我在警告对话框中做了一些编码。但那次来了两次。

这是我的代码:

datePickerDialog = new DatePickerDialog(AddNewTest.this, 
    new OnDateSetListener() 
    {
        @Override
        public void onDateSet(DatePicker view, int _year, int _monthOfYear,
            int _dayOfMonth) 
        {
            String date = _year+"";
            if(_monthOfYear+1<10)
                date += "0";
            date += (_monthOfYear+1);
            if(_dayOfMonth<10)
                date += "0";                
            date += _dayOfMonth;

            testdate = Integer.parseInt(date);

            if(testdate != currentDate)
            {
                if(testdate < currentDate)
                {
                    TestDetailsInfo info = new TestDetailsInfo();
                    TestDetailsTable table = new TestDetailsTable();
                    info.setMemberid(getMemberid());
                    info.setTestname(getTestname());
                    info.setTestdate(testdate);

                    if(table.checkDate(info) > 0)
                    {
                        testdate = 0;
                        testDate.setText("");
                        MyAlertBox("Alert", "Sorry, You Have Already Entered For This Date", activity);
                    }
                    else
                    {
                        setTestdate(testdate);
                        testDate.setText(_dayOfMonth+"/"+(_monthOfYear+1)+"/"+_year);
                    }
                }
                else
                {
                    testdate = 0;
                    testDate.setText("");
                    //isInsert = false;
                    MyAlertBox("Alert", "Sorry, Please Enter Previous Date", activity);
                }
            }
            else if(testdate == currentDate)
            {
                setTestdate(testdate);
                testDate.setText(_dayOfMonth+"/"+(_monthOfYear+1)+"/"+_year);
            }
        }
    }, year, monthOfYear, dayOfMonth);
datePickerDialog.show();

我的提示框代码是

private void MyAlertBox(String title, String message,  Context context)
{
    new AlertDialog.Builder(context)
            .setMessage(message)
            .setTitle(title)
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int which) 
                {
                    dialog.cancel();
                }
            })
            .show();
}

我的问题是,如果我选择显示对不起的转发日期,请仅输入过去的日期。但那个对话框出现了两次。我做了很多方法来解决这个问题。但我没有成功。在那个堆栈中,我还搜索了那个。

谢谢你 香卡

1 个答案:

答案 0 :(得分:0)

点击您的小部件的事件

Button b = (Button)findViewById(R.id.SetDeliveryDate);
                EnterDeliveryDate.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        new DatePickerDialog(MobileQDC_Booking_Screen.this, date, myCalendar
                                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
           clicked = true;          

                    }
                }); 

//date picker dialouge
final  DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {


                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear,
                            int dayOfMonth) {
                        if(clicked)
                        {               
                        myCalendar.set(Calendar.YEAR, year);
                        myCalendar.set(Calendar.MONTH, monthOfYear);
                        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                        String myFormat = "dd MMM yyyy"; 

                    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);  
                    _SetDD = sdf.format(myCalendar.getTime());


                    try {
                        Date dateBooking = sdf.parse(_BookingDate);
                        Date dateDue = sdf.parse(_SetDD);
                        if(dateDue.after(dateBooking)){ 
                            EnterDeliveryDate.setText(_SetDD);

                        }else if(dateDue.equals(dateBooking)){
                            EnterDeliveryDate.setText(_SetDD);

                        }
                        else{
                        // put your alert code
                        }

                    } catch (Exception e) {

                        e.printStackTrace();
                    }   
                    clicked= false;
                        }
                    }
                };