Bu makalede, Android uygulaması geliştirirken DatePicker bileşeni kullanarak, seçilen tarihe göre her gün için farklı mesajlar nasıl gösterilir, adım adım açıklanacaktır. Bu örnekte, kullanıcı bir tarih seçtiğinde, seçilen tarihin hangi güne denk geldiğine göre bir günaydın mesajı görüntülenmektedir.
Dilerseniz örneği DatePicker kullanmadan günün tarihine göre otomatik olarak gün adını alan ve mesaj veren bir uygulamaya dönüştürebilirsiniz. Bunun için bugünün tarihinden gün ismini çekmeyi gösteren makaleyi inceleyebilirsiniz.

1. Proje Yapısı ve Bileşenler
activity_main.xml
Uygulamanın görünümünü tanımlayan XML dosyasının içeriği aşağıdaki gibi olacaktır. Burada, bir DatePicker ve TextView bileşenleri yer almaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:padding="16dp"> <!-- DatePicker --> <DatePicker android:id="@+id/datePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- Gün Mesajı --> <TextView android:id="@+id/textViewMesaj" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Gün Mesajı" android:textSize="24sp" android:textAlignment="center" /> </LinearLayout> |
- DatePicker: Kullanıcının tarih seçmesini sağlar.
- TextView: Seçilen tarihe göre mesajı göstermek için kullanılır.
MainActivity.java
Ana aktivitede, DatePicker‘ın seçilen tarihi alarak, buna uygun bir mesajı TextView‘de gösterecek olan Java kodu aşağıda açıklanmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package com.example.gunmesaji; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; public class MainActivity extends AppCompatActivity { DatePicker datePicker; TextView textViewMesaj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Bileşenlerin tanımlanması datePicker = findViewById(R.id.datePicker); textViewMesaj = findViewById(R.id.textViewMesaj); // DatePicker'da tarih değiştiğinde datePicker.setOnDateChangedListener((view, year, monthOfYear, dayOfMonth) -> { // Seçilen tarihi LocalDate'e dönüştürme LocalDate secilenTarih = LocalDate.of(year, monthOfYear + 1, dayOfMonth); String gunIsmi = secilenTarih.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault()); // Gün bilgisine göre mesaj belirleme (if-else kullanımı) String gunMesaji = ""; if (gunIsmi.equals("Pazartesi")) { gunMesaji = "Günaydın! Pazartesi enerjisiyle haftaya başlayalım! ☀️"; } else if (gunIsmi.equals("Salı")) { gunMesaji = "Günaydın! Salı günü üretkenlik zamanı! 💪"; } else if (gunIsmi.equals("Çarşamba")) { gunMesaji = "Günaydın! Haftanın ortasındayız, devam! 🚀"; } else if (gunIsmi.equals("Perşembe")) { gunMesaji = "Günaydın! Perşembe günü harika olsun! 🌼"; } else if (gunIsmi.equals("Cuma")) { gunMesaji = "Günaydın! Cuma günü hafta sonuna az kaldı! 🎉"; } else if (gunIsmi.equals("Cumartesi")) { gunMesaji = "Günaydın! Cumartesi keyfi seninle olsun! 🏖️"; } else if (gunIsmi.equals("Pazar")) { gunMesaji = "Günaydın! Pazar günü dinlenme zamanı! 😌"; } else { gunMesaji = "Gün bilgisi alınamadı."; } // Mesajı TextView'e yazdırma textViewMesaj.setText(gunMesaji); }); } } |
Kod Açıklaması
DatePicker ile Tarih Seçimi
DatePicker
bileşeni kullanıcının tarih seçmesine olanak tanır. Tarih değiştiğinde,setOnDateChangedListener()
metoduyla tetiklenir.- Kullanıcı bir tarih seçtiğinde, bu tarih
LocalDate.of(year, monthOfYear + 1, dayOfMonth)
ile bir LocalDate nesnesine dönüştürülür.
Gün Bilgisi ve Mesaj
secilenTarih.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault())
kullanılarak seçilen tarihin hangi güne denk geldiği elde edilir.if-else
yapısı ile, seçilen günün ismine göre her bir gün için özel bir mesaj belirlenir.- Örneğin, “Pazartesi” için “Günaydın! Pazartesi enerjisiyle haftaya başlayalım! ☀️” mesajı atanır.
- Eğer seçilen gün bilinemiyorsa, default olarak “Gün bilgisi alınamadı.” mesajı görüntülenir.
Mesajı TextView’e Yazdırma
textViewMesaj.setText(gunMesaji)
ile, oluşturulan mesaj TextView bileşeninde gösterilir.
Sonuç
Bu örnekte, Android uygulamanızda DatePicker kullanarak kullanıcıların bir tarih seçmesini sağlayıp, seçilen tarihin hangi güne denk geldiğine göre anlamlı ve kişisel bir günaydın mesajı göstermeyi başardık. Bu tür uygulamalar kullanıcı deneyimini artırmak ve uygulamanın etkileşimini güçlendirmek için oldukça faydalıdır.
Bu kodda kullanılan if-else
yapısı, sadece birkaç gün için mesajları belirlemek adına yeterlidir, ancak çok daha fazla seçenek olduğu durumlarda switch-case gibi yapılar da kullanılabilir.
Önemli Not:
Kodları Android Studio Emulatorde denediğinizde; getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault())
metodu, cihazın dil ayarına bağlı olarak haftanın gününü döndürüyor. Eğer emülatörünüzdeki dil İngilizce ise, günler İngilizce olarak dönecektir (örneğin, “Monday”, “Tuesday” vb.), bu da Türkçe gün mesajlarıyla uyuşmaz ve “Gün bilgisi alınamadı” mesajını gösterir.
Bu durumu çözmek için, dilin Türkçe olduğundan emin olabilirsiniz. Locale.getDefault()
yerine Locale("tr", "TR")
kullanarak Türkçe gün adlarını alabilirsiniz. Aşağıda kodunuzu bu şekilde düzeltebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package com.example.gunmesaji; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; public class MainActivity extends AppCompatActivity { DatePicker datePicker; TextView textViewMesaj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Bileşenlerin tanımlanması datePicker = findViewById(R.id.datePicker); textViewMesaj = findViewById(R.id.textViewMesaj); // DatePicker'da tarih değiştiğinde datePicker.setOnDateChangedListener((view, year, monthOfYear, dayOfMonth) -> { // Seçilen tarihi LocalDate'e dönüştürme LocalDate secilenTarih = LocalDate.of(year, monthOfYear + 1, dayOfMonth); // Türkçe dil ayarını kullanarak gün ismini almak String gunIsmi = secilenTarih.getDayOfWeek().getDisplayName(TextStyle.FULL, new Locale("tr", "TR")); // Gün bilgisine göre mesaj belirleme (if-else kullanımı) String gunMesaji = ""; if (gunIsmi.equals("Pazartesi")) { gunMesaji = "Günaydın! Pazartesi enerjisiyle haftaya başlayalım! ☀️"; } else if (gunIsmi.equals("Salı")) { gunMesaji = "Günaydın! Salı günü üretkenlik zamanı! 💪"; } else if (gunIsmi.equals("Çarşamba")) { gunMesaji = "Günaydın! Haftanın ortasındayız, devam! 🚀"; } else if (gunIsmi.equals("Perşembe")) { gunMesaji = "Günaydın! Perşembe günü harika olsun! 🌼"; } else if (gunIsmi.equals("Cuma")) { gunMesaji = "Günaydın! Cuma günü hafta sonuna az kaldı! 🎉"; } else if (gunIsmi.equals("Cumartesi")) { gunMesaji = "Günaydın! Cumartesi keyfi seninle olsun! 🏖️"; } else if (gunIsmi.equals("Pazar")) { gunMesaji = "Günaydın! Pazar günü dinlenme zamanı! 😌"; } else { gunMesaji = "Gün bilgisi alınamadı."; } // Mesajı TextView'e yazdırma textViewMesaj.setText(gunMesaji); }); } } |
new Locale("tr", "TR")
ifadesi, dil olarak Türkçe’yi ve ülke olarak Türkiye’yi belirtir. Bu sayede gün isimlerini Türkçe olarak alırsınız (örneğin, “Pazartesi”, “Salı” vb.).- Bu değişiklikle, emülatörde dil ayarı ne olursa olsun, günler her zaman Türkçe olarak gösterilecektir ve doğru mesajlar görüntülenecektir.
Bu şekilde, “Gün bilgisi alınamadı” hatasından kurtulabilir ve doğru Türkçe gün mesajlarını alabilirsiniz.