एंड्रॉइड में DatePicker और TimePicker चेंज लिसनर
यह गाइड DatePicker और TimePicker विजेट्स के लिए चेंज लिसनर लागू करने का तरीका दिखाता है, दोनों इंलाइन विजेट्स और डायलॉग्स के लिए।
लेआउट (activity_main.xml)
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="24dp"
android:gravity="center">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:calendarViewShown="false" />
<Button
android:id="@+id/btnTimePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="टाइम पिकर दिखाएं" />
</LinearLayout>
MainActivity.java - DatePicker लिसनर
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private Button btnTimePicker;
private DatePicker datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker = findViewById(R.id.datePicker);
btnTimePicker = findViewById(R.id.btnTimePicker);
// DatePicker विजेट लिसनर (इंलाइन)
datePicker.setOnDateChangedListener((view, year, monthOfYear, dayOfMonth) -> {
String date = String.format("चुनी गई तारीख: %02d/%02d/%d", dayOfMonth, monthOfYear + 1, year);
Toast.makeText(this, date, Toast.LENGTH_SHORT).show();
});
// TimePickerDialog खोलने के लिए बटन
btnTimePicker.setOnClickListener(v -> showTimePickerDialog());
}
private void showTimePickerDialog() {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(
this,
(view, hourOfDay, minuteOfHour) -> {
String time = String.format("चुना गया समय: %02d:%02d", hourOfDay, minuteOfHour);
Toast.makeText(this, time, Toast.LENGTH_SHORT).show();
},
hour, minute, true // true = 24-घंटे फॉर्मेट
);
timePickerDialog.show();
}
}
DatePickerDialog के साथ (इंलाइन के बजाय)
private void showDatePickerDialog() {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(
this,
(view, selectedYear, selectedMonth, selectedDay) -> {
String date = String.format("तारीख: %02d/%02d/%d", selectedDay, selectedMonth + 1, selectedYear);
Toast.makeText(this, date, Toast.LENGTH_SHORT).show();
},
year, month, day
);
datePickerDialog.show();
}
कॉम्बाइंड Date & Time Picker (सिंगल डायलॉग)
Material Components लाइब्रेरी का उपयोग करके:
build.gradle
implementation "com.google.android.material:material:1.10.0"
उपयोग
import com.google.android.material.datepicker.MaterialDatePicker; import com.google.android.material.timepicker.MaterialTimePicker; import com.google.android.material.timepicker.TimeFormat; // डेट पिकर MaterialDatePickerdatePicker = MaterialDatePicker.Builder.datePicker() .setTitleText("तारीख चुनें") .build(); // टाइम पिकर MaterialTimePicker timePicker = new MaterialTimePicker.Builder() .setTimeFormat(TimeFormat.CLOCK_24H) .setHour(12) .setMinute(0) .setTitleText("समय चुनें") .build(); // क्रमिक रूप से दिखाएं datePicker.addOnPositiveButtonClickListener(selection -> { timePicker.show(getSupportFragmentManager(), "TIME_PICKER"); }); timePicker.addOnPositiveButtonClickListener(dialog -> { long date = datePicker.getSelection(); int hour = timePicker.getHour(); int minute = timePicker.getMinute(); // संयुक्त डेट-टाइम प्रोसेस करें }); datePicker.show(getSupportFragmentManager(), "DATE_PICKER");
लिसनर इंटरफेस तुलना
| कंपोनेंट | इंलाइन लिसनर | डायलॉग लिसनर |
|---|---|---|
| DatePicker | OnDateChangedListener |
DatePickerDialog.OnDateSetListener |
| TimePicker | OnTimeChangedListener |
TimePickerDialog.OnTimeSetListener |
बेस्ट प्रैक्टिसेज
- मॉडर्न ऐप्स के लिए MaterialDatePicker/MaterialTimePicker का उपयोग करें
- उपयोगकर्ता की लोकेल के अनुसार डेट/टाइम फॉर्मेट करें
- न्यूनतम/अधिकतम तारीख सीमाएं सेट करें:
datePickerDialog.getDatePicker().setMinDate() - डायलॉग्स के लिए Fragment-आधारित दृष्टिकोण का उपयोग करें (कॉन्फिगरेशन चेंज सर्वाइवल)