Android UI How to - Create DatePickerDialog from onCreateDialog method








The following code shows how to Create DatePickerDialog from onCreateDialog method.

Example

Layout xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/date" />

    <Button
        android:id="@+id/details_date"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/edit_text"
        android:gravity="center_vertical" />

</LinearLayout>

Java code

/*******************************************************************************
 * Copyright (c) 2012 Manning/*w w  w. j  a  va  2  s .c o m*/
 * See the file license.txt for copying permission.
 ******************************************************************************/

import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.DatePicker;
import android.widget.Toast;

public class MainActivity extends Activity {

  private static final int DATE_DIALOG_ID = 0;

  private int mYear;
  private int mMonth;
  private int mDay;
  private OnDateSetListener mDateSetListener;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // get the current date
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    mDateSetListener = new DatePickerDialog.OnDateSetListener() {
      @Override
      public void onDateSet(DatePicker view, int year, int monthOfYear,
          int dayOfMonth) {
        Toast.makeText(
            MainActivity.this,
            getString(R.string.picked_date_format, monthOfYear,
                dayOfMonth, year), Toast.LENGTH_SHORT).show();
      }
    };

    findViewById(R.id.details_date).setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
          }
        });
  }

  @Override
  protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
      return new DatePickerDialog(this, mDateSetListener, mYear,
          mMonth, mDay);
    }
    return super.onCreateDialog(id);
  }

}
null