codestory

Die Anleitung zu Android DatePickerDialog

  1. Android DatePickerDialog
  2. Das Beispiel vom DatePickerDialog

1. Android DatePickerDialog

Android DatePickerDialog stellt einen DatePicker in einen Dialog. Der Benutzer kann ein Datum auswählen. Grundsätzlich gibt es keinen signifikanten Unterschied zwischen DatePickerDialog und DatePicker, wenn Sie jedoch den Anwendungsspeicherplatz sparen möchten, sollen Sie DatePickerDialog benutzen.
DatePickerDialog wird zur Laufzeit der Anwendung erstellt, wenn der Benutzer ein Datum auswählen muss. Sie können es mithilfe des Java-Code erstellen und anzeigen lassen:
DatePickerDialog (Calendar Mode) (Default)
int selectedYear = 2000;
int selectedMonth = 5;
int selectedDayOfMonth = 10;

// Date Select Listener.
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year,
                          int monthOfYear, int dayOfMonth) {

        editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
    }
};

// Create DatePickerDialog (Spinner Mode):
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            dateSetListener, selectedYear, selectedMonth, selectedDayOfMonth);

// Show
datePickerDialog.show();
DatePickerDialog (Spinner Mode)
int selectedYear = 2000;
int selectedMonth = 5;
int selectedDayOfMonth = 10;

// Date Select Listener.
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year,
                          int monthOfYear, int dayOfMonth) {

        editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
    }
};

// Create DatePickerDialog (Spinner Mode):
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
            dateSetListener, selectedYear, selectedMonth, selectedDayOfMonth);

// Show
datePickerDialog.show();

2. Das Beispiel vom DatePickerDialog

Das Beispiel-Vorschau
Calendar Mode
Spinner Mode
Im Android Studio erstellen Sie ein neues Projekt:
  • File > New > New Project > Empty Activity
    • Name: DatePickerDialogExample
    • Package name: org.o7planning.datepickerdialogexample
    • Language: Java
Die Interface der Anwendung sieht aus:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="90dp"
        android:ems="10"
        android:inputType="date"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="90dp"
        android:text="Select Date"
        app:layout_constraintStart_toEndOf="@+id/editText_date"
        app:layout_constraintTop_toTopOf="parent" />

    <CheckBox
        android:id="@+id/checkBox_isSpinnerMode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:text="Spinner Mode?"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText_date" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.datepickerdialogexample;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private EditText editTextDate;
    private Button buttonDate;
    private CheckBox checkBoxIsSpinnerMode;

    private int lastSelectedYear;
    private int lastSelectedMonth;
    private int lastSelectedDayOfMonth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.editTextDate = (EditText) this.findViewById(R.id.editText_date);
        this.buttonDate = (Button) this.findViewById(R.id.button_date);
        this.checkBoxIsSpinnerMode = this.findViewById(R.id.checkBox_isSpinnerMode);

        this.buttonDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                buttonSelectDate();
            }
        });

        // Get Current Date
        final Calendar c = Calendar.getInstance();
        this.lastSelectedYear = c.get(Calendar.YEAR);
        this.lastSelectedMonth = c.get(Calendar.MONTH);
        this.lastSelectedDayOfMonth = c.get(Calendar.DAY_OF_MONTH);
    }

    // User click on 'Select Date' button.
    private void buttonSelectDate() {
        final boolean isSpinnerMode = this.checkBoxIsSpinnerMode.isChecked();

        // Date Select Listener.
        DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year,
                                  int monthOfYear, int dayOfMonth) {

                editTextDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

                lastSelectedYear = year;
                lastSelectedMonth = monthOfYear;
                lastSelectedDayOfMonth = dayOfMonth;
            }
        };

        DatePickerDialog datePickerDialog = null;

        if(isSpinnerMode)  {
            // Create DatePickerDialog:
            datePickerDialog = new DatePickerDialog(this,
                    android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
                    dateSetListener, lastSelectedYear, lastSelectedMonth, lastSelectedDayOfMonth);
        }
        // Calendar Mode (Default):
        else {
            datePickerDialog = new DatePickerDialog(this,
                    dateSetListener, lastSelectedYear, lastSelectedMonth, lastSelectedDayOfMonth);
        }

        // Show
        datePickerDialog.show();
    }
}

Anleitungen Android

Show More