2013-11-21 1 views
0

저는 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(); 
} 

입니다 :

여기 내 코드입니다. 하지만 그 대화 상자는 두 번 온다. 나는 그 문제를 해결하기 위해 많은 방법을 동원했다. 그러나 나는 성공하지 못했습니다. 그 흐름에 걸쳐 스택에서 나는 또한 그것을 찾았다.

는 당신에게 당신의 위젯의 샨

답변

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; 
         } 
        } 
       };