2013-09-25 16 views
20

Voglio mostrare la finestra di popup di datepicker. Ho trovato alcuni esempi ma non riesco a farlo correttamente. Ho un pulsante e voglio che quando faccio clic sul pulsante la finestra di dialogo DatePicker dovrebbe apparire e dopo aver impostato la data, la data dovrebbe essere memorizzata in una variabile. Vi preghiamo di fornirmi codice di esempio o buoni collegamenti.Datepicker: Come popup datepicker quando si fa clic sul pulsante e si memorizza il valore nella variabile

+1

http://stackoverflow.com/questions/18672094/android-sdk-datepickerfragment-and-textview/18672134#18672134. controllare questo – Raghunandan

+0

Possibile duplicato di [this] (http://stackoverflow.com/q/14933330/1952459). Ti suggerisco di cercare prima su Google o qui su StackOverflow per i tuoi problemi e poi pubblicare la domanda. –

+0

http://www.mkyong.com/android/android-date-picker-example/ controlla questo –

risposta

13

rendere questa classe come classe interna nella vostra attività

se si vuole impostare la data corrente come data si vede quando si apre il DatePicker. È possibile ottenere in questo modo

Calendar c = Calendar.getInstance(); 
int startYear = c.get(Calendar.YEAR); 
int startMonth = c.get(Calendar.MONTH); 
int startDay = c.get(Calendar.DAY_OF_MONTH); 

class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{ 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     // Use the current date as the default date in the picker 
     DatePickerDialog dialog = new DatePickerDialog(BookingFormActivity.this, this, startYear, startMonth, startDay); 
return dialog; 

    } 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     // TODO Auto-generated method stub 
     // Do something with the date chosen by the user 
     startYear = year; 
     startMonth = monthOfYear; 
     startDay = dayOfMonth; 
     updateStartDateDisplay(); 


    } 
    } 

è possibile chiamare questa finestra impostando questo metodo per onClick

public void showStartDateDialog(View v){ 
    DialogFragment dialogFragment = new StartDatePicker(); 
    dialogFragment.show(getFragmentManager(), "start_date_picker"); 
    } 
+0

dove è implementato 'updateStartDateDisplay'? In che modo "StartDatePicker" è a conoscenza di questo metodo? – MOnsDaR

36

Prova questo.

Utilizzare questo codice nel tasto clic. La finestra di dialogo del selettore della data verrà mostrata.

  Calendar c = Calendar.getInstance(); 
    int mYear = c.get(Calendar.YEAR); 
    int mMonth = c.get(Calendar.MONTH); 
    int mDay = c.get(Calendar.DAY_OF_MONTH); 
    System.out.println("the selected " + mDay); 
    DatePickerDialog dialog = new DatePickerDialog(Registration.this, 
      new mDateSetListener(), mYear, mMonth, mDay); 
    dialog.show(); 

Quindi, la classe mDateSetListener deve essere scritta.

class mDateSetListener implements DatePickerDialog.OnDateSetListener { 

     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      // TODO Auto-generated method stub 
      // getCalender(); 
      int mYear = year; 
      int mMonth = monthOfYear; 
      int mDay = dayOfMonth; 
      v.setText(new StringBuilder() 
        // Month is 0 based so add 1 
        .append(mMonth + 1).append("/").append(mDay).append("/") 
        .append(mYear).append(" ")); 
      System.out.println(v.getText().toString()); 


     } 
    } 

Si prega di controllare questa risposta e votare.

+0

Come viene importato il 'Registration.this'? – Abbe

+1

@Abbe 'Registration.this' è solo il riferimento all'istanza dell'attività denominata' Registration' poiché 'DatePickerDialog' richiede un' Context' e ogni 'Activity' è un' Context'. Usi "ActivityName.this" invece di "questo" quando sei in un ambito diverso, come in un listener di eventi. –

Problemi correlati