דיאלוג לבחירת תאריך ושעה ב-Android

Android מנתח התאריך והזמן נמצאים בשימוש רב ביישומי Android. במדריך זה נדגים את השימוש בתיבת דיאלוג של בחירת תאריך ו- בחירת טיימר ביישום ה-Android שלנו. רכיבים אלה משמשים לבחירת תאריך וזמן בממשק משתמש מותאם אישית. נשתמש במחלקות DatePickerDialog ו- TimePickerDialog עם מחלקת Calendar בקוד היישום שלנו כדי להשיג זאת.

Android DatePickerDialog ו- TimePickerDialog

אם כמות הזמן והתאריך יכולים לשמש כווידג'טים עצמאיים, הם מצטיים בהרבה מקום על המסך. לכן, השימוש בהם בתוך דיאלוג הוא בחירה טובה יותר. למרבה המזל, Android מספקת לנו את מחלקות DatePickerDialog ו- TimePickerDialog המשלמות. DatePickerDialog ו- TimePickerDialog מכילות מתודות קריאת חזרה onDateSetListener() ו- onTimeSetListener() בהתאמה. מתודות אלו נקראות כאשר המשתמש מסיים למלא את התאריך והזמן בהתאמה. מחלקת DatePickerDialog מכילה בנאי עם 5 ארגומנטים עם הפרמטרים הבאים מפורטים להלן.

  1. Context: נדרש קשר היישום
  2. פונקציית קריאה חזרה: onDateSet() נקראת כאשר המשתמש מגדיר את התאריך עם הפרמטרים הבאים:
  • int שנה : היא תאחסן את השנה שנבחרה בתיבת הדיאלוג
  • int monthOfYear : זה ישמור על חודש הנבחר הנוכחי מהדיאלוג
  • int dayOfMonth : זה ישמור על היום הנבחר הנוכחי מהדיאלוג
  1. int mYear : זה מציג את השנה הנוכחית הנראית כאשר הדיאלוג קופץ
  2. int mMonth : זה מציג את החודש הנוכחי הנראה כאשר הדיאלוג קופץ
  3. int mDay : זה מציג את היום הנוכחי הנראה כאשר הדיאלוג קופץ

מחלקת TimePickerDialog מורכבת מבנאי 5 ארגומנטים עם הפרמטרים המצוינים למטה.

  1. Context: זה מחייב את ההקשר של היישום
  2. CallBack Function: onTimeSet() מופעל כאשר המשתמש מגדיר את הזמן עם הפרמטרים הבאים:
  • int hourOfDay : זה ישמור על השעה הנבחרת הנוכחית של היום מהדיאלוג
  • int minute : זה ישמור על הדקה הנבחרת הנוכחית מהדיאלוג
  1. int mHours : זה מציג את השעה הנוכחית הנראית כאשר הדיאלוג קופץ
  2. int mMinute : זה מציג את הדקה הנוכחית הנראית כאשר הדיאלוג קופץ
  3. boolean false : אם הוא מוגדר לשקר זה יציג את הזמן בפורמט של 24 שעות אחרת לא

דוגמת מבנה פרויקט נבחר לבוחר תאריך ושעה ב- Android

קוד פרויקט לתיבת דו-שיח נבחרת תאריך ושעה ב- Android

הקובץ activity_main.xml מכיל שני כפתורים להפעלת תיבות דו-שיח לבחירת תאריך ושעה ולהגדרת הזמן שנבחר על ידי המשתמש בשני תצוגות EditText. קוד ה-XML ניתן למטה. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT DATE"
        android:id="@+id/btn_date"
        android:layout_alignBottom="@+id/in_date"
        android:layout_toRightOf="@+id/in_date"
        android:layout_toEndOf="@+id/in_date" />

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/in_time"
        android:layout_below="@+id/in_date"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT TIME"
        android:id="@+id/btn_time"
        android:layout_below="@+id/btn_date"
        android:layout_alignLeft="@+id/btn_date"
        android:layout_alignStart="@+id/btn_date" />

</RelativeLayout>

המחלקה MainActivity.java ניתנת למטה:

package com.journaldev.datetimepickerdialog;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements
        View.OnClickListener {

    Button btnDatePicker, btnTimePicker;
    EditText txtDate, txtTime;
    private int mYear, mMonth, mDay, mHour, mMinute;

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

        btnDatePicker=(Button)findViewById(R.id.btn_date);
        btnTimePicker=(Button)findViewById(R.id.btn_time);
        txtDate=(EditText)findViewById(R.id.in_date);
        txtTime=(EditText)findViewById(R.id.in_time);

        btnDatePicker.setOnClickListener(this);
        btnTimePicker.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        if (v == btnDatePicker) {

            // Get Current Date
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);


            DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {

                            txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
        if (v == btnTimePicker) {

            // Get Current Time
            final Calendar c = Calendar.getInstance();
            mHour = c.get(Calendar.HOUR_OF_DAY);
            mMinute = c.get(Calendar.MINUTE);

            // Launch Time Picker Dialog
            TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {

                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay,
                                              int minute) {

                            txtTime.setText(hourOfDay + ":" + minute);
                        }
                    }, mHour, mMinute, false);
            timePickerDialog.show();
        }
    }
}

בקוד לעיל יצרנו אובייקט של לוח שנה באמצעות `Calendar.getInstance()` כדי להציג את התאריך והשעה הנוכחיים באמצעות השדות הסטטיים המתאימים. הערה: לוח השנה והשעון המוצגים הם ערכי UI המוגדרים כברירת מחדל בערכת הערכות AppCompat. למטה נמצאת הפלט שנוצר על ידי דוגמת היישום שלנו לבחירת תאריך ושעה ב-Android. זה מסיים את מדריך דוגמת דיאלוג לבחירת תאריך ושעה ב-Android. ניתן להוריד את הפרויקט הסופי Android DateTimePickerDialog Project מהקישור למטה.

הורד את פרויקט בחירת תאריך ושעה ב-Android

Source:
https://www.digitalocean.com/community/tutorials/android-date-time-picker-dialog