Android date picker dialog kullanımı

Bu yazımda android de Date Picker Dialog kullanımını paylaşacağım. Uygulamalarımızda kullanıcıdan veri girişi yapmasını isteriz. Bu verilerden biri de tarihlerdir. Biz bunu kullanıcıdan bir EditText ile alabiliriz fakat doğru formatta girmesi için birçok kontrol eklemek durumunda kalırız. Android de Date Picker dediğimiz nesneler sayesinde kullanıcıdan tarihi seçtirerek istediğimiz formatta elde edebiliriz. Konunun daha iyi anlaşılabilmesi için bir uygulama yapalım. Bu uygulamada bir butona tıklanınca dialog penceremiz açılacak ve kullanıcının seçtiği tarihi bir EditText nesnesinde göstereceğiz.

1) res/layout/ dizininde activity_main.xml dosyasını oluşturuyoruz.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
tools:context="com.sdahmet.datepicker.MainActivity">

<EditText
    android:id="@+id/edittext_tarih"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="10dp" />

<Button
    android:id="@+id/button_tarih_sec"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/edittext_tarih"
    android:layout_toEndOf="@+id/edittext_tarih"
    android:layout_toRightOf="@+id/edittext_tarih"
    android:text="Tarih Seç" />

</RelativeLayout>

2) MainActivity.java dosyasını oluşturuyoruz.

package com.sdahmet.datepicker;

import android.app.DatePickerDialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    Button btnTarihSec;
    EditText etTarih;
    Context context = this;

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

        btnTarihSec = (Button) findViewById(R.id.button_tarih_sec);
        etTarih = (EditText) findViewById(R.id.edittext_tarih);

        btnTarihSec.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // Şimdiki zaman bilgilerini alıyoruz. güncel yıl, güncel ay, güncel gün.
                final Calendar takvim = Calendar.getInstance();
                int yil = takvim.get(Calendar.YEAR);
                int ay = takvim.get(Calendar.MONTH);
                int gun = takvim.get(Calendar.DAY_OF_MONTH);

                DatePickerDialog dpd = new DatePickerDialog(context, 
                        new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        // ay değeri 0 dan başladığı için (Ocak=0, Şubat=1,..,Aralık=11)
                        // değeri 1 artırarak gösteriyoruz.
                        month += 1;
                        // year, month ve dayOfMonth değerleri seçilen tarihin değerleridir.
                        // Edittextte bu değerleri gösteriyoruz.
                        etTarih.setText(dayOfMonth + "/" + month + "/" + year);
                    }
                }, yil, ay, gun);
                // datepicker açıldığında set edilecek değerleri buraya yazıyoruz.
                // şimdiki zamanı göstermesi için yukarda tanmladığımz değşkenleri kullanyoruz.

                // dialog penceresinin button bilgilerini ayarlıyoruz ve ekranda gösteriyoruz.
                dpd.setButton(DatePickerDialog.BUTTON_POSITIVE, "Seç", dpd);
                dpd.setButton(DatePickerDialog.BUTTON_NEGATIVE, "İptal", dpd);
                dpd.show();

            }
        });
    }
}
  1. btnTarihSec butonunun tıklanma olayı içerisinde
    final Calendar takvim = Calendar.getInstance(); ile bir takvim nesnesi oluşturuyoruz.
  2. int yil = takvim.get(Calendar.YEAR); ile güncel tarihin yıl değerini alıyoruz.
  3. int ay = takvim.get(Calendar.MONTH); ile güncel tarihin ay değerini alıyoruz.
  4. int gun = takvim.get(Calendar.DAY_OF_MONTH); ile güncel tarihin gün değerini alıyoruz.
  5. DatePickerDialog dpd = new DatePickerDialog(...) ile bir dialog nesnesi oluşturuyoruz.
  6. onDateSet(DatePicker view, int year, int month, int dayOfMonth) fonksiyonu ile kullanıcınnın seçtiği tarih değerlerini alıyoruz.
  7. dpd.setButton(DatePickerDialog,BUTTON_POSITIVE, "Seç", dpd); ile dialog penceresi açıldığı zaman seçim yapmamıza yarayan butonun yazı değerine "Seç" yazıyoruz.
  8. dpd.setButton(DatePickerDialog,BUTTON_NEGATIVE, "İptal", dpd); ile dialog penceresi açıldığı zaman seçim yapmamıza yarayan butonun yazı değerine "İptal" yazıyoruz.
  9. dpd.show(); ile dialog penceresini gösteriyoruz.
// Şimdiki zaman bilgilerini alıyoruz. güncel yıl, güncel ay, güncel gün.
final Calendar takvim = Calendar.getInstance();
int yil = takvim.get(Calendar.YEAR);
int ay = takvim.get(Calendar.MONTH);
int gun = takvim.get(Calendar.DAY_OF_MONTH);

DatePickerDialog dpd = new DatePickerDialog(context, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        // ay değeri 0 dan başladığı için (Ocak=0, Şubat=1,..,Aralık=11)
        // değeri 1 artırarak gösteriyoruz.
        month += 1;
        // year, month ve dayOfMonth değerleri seçilen tarihin değerleridir.
        // Edittextte bu değerleri gösteriyoruz.
         etTarih.setText(dayOfMonth + "/" + month + "/" + year);
    }
}, yil, ay, gun);
// datepicker açıldığında set edilecek değerleri buraya yazıyoruz.
// şimdiki zamanı göstermesi için yukarıda tanımladığımız değişkenleri kullanıyoruz.

// dialog penceresinin button bilgilerini ayarlıyoruz ve ekranda gösteriyoruz.
dpd.setButton(DatePickerDialog.BUTTON_POSITIVE, "Seç", dpd);
dpd.setButton(DatePickerDialog.BUTTON_NEGATIVE, "İptal", dpd);
dpd.show();

Uygulama görüntüleri

ETİKETLER
android date picker dialog kullanımıandroid date picker dialog örneğiandroid tarih seçmedate picker dialog
Öncekİ Yazı

Android custom alert dialog kullanımı

Sonrakİ Yazı

Android time picker dialog kullanımı

İlgili Yazılar