এই টিউটোরিয়ালে আমরা শিখব কীভাবে DatePickerDialog এবং DialogFragment ব্যবহার করে একটি ডেট পিকার ডায়লগ দেখাতে হয় এবং নির্বাচিত তারিখ প্রক্রিয়া করা যায়।
প্রয়োজনীয় ধাপগুলো
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল তৈরি করুন
res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".MainActivity"
android:background="#f2f6f4">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date"
android:layout_above="@id/button"
android:textSize="30dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="28dp"
android:fontFamily="sans-serif-condensed" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Date"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
ধাপ ৩: DatePickerFragment ক্লাস তৈরি করুন
Package-এ Right click → New → Java Class → নাম: DatePickerFragment
src/DatePickerFragment.java ফাইলে নিচের কোড যোগ করুন:
package app.com.sample;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import java.util.Calendar;
public class DatePickerFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(
getActivity(),
(DatePickerDialog.OnDateSetListener) getActivity(),
year, month, day
);
}
}
ধাপ ৪: মেইন এক্টিভিটিতে DatePickerDialog বাস্তবায়ন করুন
src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:
package app.com.sample;
import android.app.DatePickerDialog;
import androidx.fragment.app.DialogFragment;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import java.text.DateFormat;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getSupportFragmentManager(), "date picker");
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String currentDateString = DateFormat.getDateInstance(DateFormat.FULL).format(c.getTime());
TextView textView = findViewById(R.id.textView);
textView.setText(currentDateString);
}
}
ধাপ ৫: ম্যানিফেস্ট কনফিগার করুন
AndroidManifest.xml ফাইল:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
DatePickerDialog-এর গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো
DatePickerDialog dialog = new DatePickerDialog(context, listener, year, month, day); // ন্যূনতম/সর্বোচ্চ তারিখ সেট করুন (API 26+) dialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); // আজ থেকে আগে নয় dialog.getDatePicker().setMaxDate(System.currentTimeMillis() + 365L * 24 * 60 * 60 * 1000); // ১ বছর পর পর্যন্ত // স্পিনার মোড (API 21+) dialog.getDatePicker().setCalendarViewShown(false); dialog.getDatePicker().setSpinnersShown(true); // থিম কাস্টমাইজেশন new DatePickerDialog(context, R.style.MyDatePickerTheme, listener, year, month, day);
আধুনিক পদ্ধতি: MaterialDatePicker (Material Components)
implementation 'com.google.android.material:material:1.10.0'
MaterialDatePicker<Long> datePicker = MaterialDatePicker.Builder.datePicker()
.setTitleText("Select Date")
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.build();
datePicker.addOnPositiveButtonClickListener(selection -> {
String formatted = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault())
.format(new Date(selection));
textView.setText(formatted);
});
datePicker.show(getSupportFragmentManager(), "MATERIAL_DATE_PICKER");
সারাংশ
DialogFragment ব্যবহার করে DatePickerDialog দেখানো সেরা পদ্ধতি কারণ এটি কনফিগারেশন চেঞ্জ (রোটেশন) হ্যান্ডেল করতে পারে। আধুনিক অ্যাপের জন্য MaterialDatePicker ব্যবহার করা উচিত।