2010-05-28 19 views

Odpowiedz

60

Oto jak to zrobiłem:

DatePickerDialog dialog = new DatePickerDialog(this, 
       mDateSetListener, 
       year, month, day); 

    dialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     if (which == DialogInterface.BUTTON_NEGATIVE) { 
      // Do Stuff 
     } 
    } 
    }); 
+0

właśnie tego, czego szukałem, chciałem ustawić onClick, interesujący masz nadpisać domyślne przyciski – Blundell

+1

Błąd pobierania: Metoda setButton (int, String, new DialogInterface.OnClickListener() {}) jest niezdefiniowany dla typu DatePickerActivity.DatePickerFragment –

+0

Tego właśnie chcę. Dziękuję esilver. :) – Jigar

-3

Spróbuj tego:

if (resultCode == RESULT_CANCELED) { 
    Toast toast = Toast.makeText(this,"Datepicker Canceled", 10000); 
    toast.show(); 
    return; 
} 
+1

w którym przypadku powinienem go użyć? – UMAR

+0

będzie wypalanie działalność Datepicker na kliknięcie, więc na public void onActivityResult() zdarzenie u można nazwać ten kod public void onActivityResult() { if (ResultCode == RESULT_CANCELED) { Toast tost = Toast.makeText (to, "Datepicker Cancled", 10000); toast.pokazać(); return; } } } –

+0

Nie mam pojęcia, o co tu chodzi - nie ma DatePickerActivity, jest to dialog, więc pozostaje w działaniu. – esilver

0

W tej części kodu:

private DatePickerDialog.OnDateSetListener mDateSetListener = 
      new DatePickerDialog.OnDateSetListener() { 

       public void onDateSet(DatePicker view, int year, 
             int monthOfYear, int dayOfMonth) { 
        mYear = year; 
        mMonth = monthOfYear; 
        mDay = dayOfMonth; 
        updateDisplay(); 
       } 
      }; 

trzeba wdrożyć również onClick():

public void onClick (DialogInterface dialog, int which) { 
    if (which == Button.NEGATIVE) { 
     //Cancel 
    } 
} 

API dla Button.NEGATIVE

+1

oba nie działają – UMAR

+1

to nigdy nie wywołuje zdarzenia onClick. – UMAR

+0

to nie działa, nie próbuj tego –

4

Jeśli chcesz wykonać inną czynność w zależności od tego, czy użytkownik wybrał datę lub nie można użyć onDismiss obsługi. Pamiętaj, aby ustawić wartość logiczną (np. "IsDataSet"), aby wskazać, czy użytkownik wybrał datę, czy nie. Oto przykład:

// Date Picker Dialog 
    public void showDatePickerDialog(View view) { 
    int year, month, day; 
    isDataSet = false; // this is used by the onDismiss handler 

// Set initial time period in DatePicker to current month 
    calendarCurrent = Calendar.getInstance(); 
    month = calendarCurrent.get(Calendar.MONTH); 
    day = calendarCurrent.get(Calendar.DAY_OF_MONTH); 
    year = calendarCurrent.get(Calendar.YEAR); 

    DatePickerDialog datePickerDialog = new DatePickerDialog(YourActivity.this, dateSetListener, year, month, day); 
    datePickerDialog.setOnDismissListener(mOnDismissListener); 
    datePickerDialog.show(); 
    datePickerDialog_visible=true; //indicate dialog is up 
} // [END showDatePickerDialog] 

//onDismiss handler 
private DialogInterface.OnDismissListener mOnDismissListener = 
     new DialogInterface.OnDismissListener() { 
      public void onDismiss(DialogInterface dialog) { 
       datePickerDialog_visible=false; //indicate dialog is cancelled/gone 
       if (isDataSet) { // [IF date was picked 
        //do something, date now selected 
       } else { 
        //do someething else, dialog cancelled or exited 
       } 
      } 
     }; 
0

Poniższy kod pomógł mi rozwiązać problem z przycisk Anuluj nie zamyka się okno Data kompletacji. Dzięki eSilverowi za rozwiązanie.

dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() 
{ 
    public void onClick(DialogInterface dialog, int which) { 
     if (which == DialogInterface.BUTTON_NEGATIVE) { 
      datePickerPlugin.success(new PluginResult(PluginResult.Status.OK, ""), callBackId); 
      dateDialog.hide(); 
     } 
    } 
}); 
+0

. Czy możesz teraz powiedzieć mi, jak mam wiedzieć w moim przycisku Onclick, która data została ustawiona? mam na myśli wewnątrz nad funkcją chcę yy, mm, dd coz i ustawię je ponownie w moim edittext ?? –

0

Przepraszamy za pojawiały się starożytną pytanie, ale w obliczu podobnego problemu i napisałem prosty następca standardowej DatePickerDialog z właściwego zachowania. Zobacz to in this topic. Mam nadzieję, że to pomoże.

3

Od DatePickerDialog jest Dialog, obsługuje następujące:

setOnCancelListener(OnCancelListener listener) 
setOnDismissListener(OnDismissListener listener) 

Obiema słuchaczy, można zidentyfikować wszystkie zwolnienia z okna wyboru daty. Pierwszy odpowie na pytanie, ten drugi jest do ukończenia.

1
DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker datePicker, int i, int i1, int i2) { 


      } 
     }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); 

     dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialogInterface) { 

      } 
     }); 
     dialog.show(); 
1

DatePickerDialog odsłania teraz detektor onCancel.

DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) { 
      // Do whatever you want when the date is selected. 
      editText.setText(String.format("%04d-%02d-%02d", year, month+1, day)); 
     } 
    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)); 

    datePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 

     } 
    }); 
Powiązane problemy