কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে DatePickerDialog-এ তারিখ সেট করার পদ্ধতি

এই টিউটোরিয়ালে আমরা শিখব কীভাবে 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 ব্যবহার করা উচিত।

  1. এন্ড্রয়েডে DatePicker ডায়ালগের রঙ পরিবর্তন করার পদ্ধতি

  2. অ্যান্ড্রয়েড TextView-এর নির্দিষ্ট অংশকে ক্লিকযোগ্য করার পদ্ধতি

  3. অ্যান্ড্রয়েডে TextView-এ স্প্যান ব্যবহার করে টেক্সটের রঙ পরিবর্তন করার পদ্ধতি

  4. Android-এ SD কার্ডে ফোল্ডার/ফাইলে লিখার অনুমতি সেট করার পদ্ধতি