আপনার অ্যাপে পিকার যোগ করুন

অ্যান্ড্রয়েড ব্যবহারকারীকে ব্যবহার করার জন্য প্রস্তুত ডায়ালগ হিসাবে একটি সময় বা তারিখ বেছে নেওয়ার জন্য নিয়ন্ত্রণ প্রদান করে। এই বাছাইকারীরা সময়ের প্রতিটি অংশ (ঘন্টা, মিনিট, AM/PM) বা তারিখ (মাস, দিন, বছর) নির্বাচন করার জন্য নিয়ন্ত্রণ প্রদান করে।

material.io থেকে টাইম পিকারের উদাহরণ
চিত্র 1. একটি মোবাইল ক্যালেন্ডার পিকারে ঘন্টা নির্বাচন।

এই বাছাইকারীগুলি ব্যবহার করা নিশ্চিত করতে সাহায্য করে যে আপনার ব্যবহারকারীরা বৈধ, সঠিকভাবে ফর্ম্যাট করা এবং ব্যবহারকারীর লোকেলে সামঞ্জস্য করা একটি সময় বা তারিখ বেছে নিতে পারে৷

material.io থেকে মডেল ডেট পিকারের উদাহরণ
চিত্র 2. মডেল ডেট পিকার।

আমরা আপনাকে প্রতিবার বা তারিখ পিকার হোস্ট করতে DialogFragment ব্যবহার করার পরামর্শ দিই। DialogFragment আপনার জন্য ডায়ালগ লাইফসাইকেল পরিচালনা করে এবং আপনাকে বিভিন্ন লেআউট কনফিগারেশনে বাছাইকারীদের প্রদর্শন করতে দেয়, যেমন হ্যান্ডসেটের মৌলিক ডায়ালগে বা বড় স্ক্রিনে লেআউটের এমবেডেড অংশ হিসাবে।

একটি সময় চয়নকারী তৈরি করুন

DialogFragment ব্যবহার করে একটি TimePickerDialog প্রদর্শন করতে, একটি ফ্র্যাগমেন্ট ক্লাস সংজ্ঞায়িত করুন যা DialogFragment প্রসারিত করে এবং ফ্র্যাগমেন্টের onCreateDialog() পদ্ধতি থেকে একটি TimePickerDialog ফেরত দেয়।

একটি টাইম পিকারের জন্য ডায়ালগ ফ্র্যাগমেন্ট প্রসারিত করুন

একটি TimePickerDialog এর জন্য একটি DialogFragment সংজ্ঞায়িত করতে, নিম্নলিখিতগুলি করুন:

  • TimePickerDialog এর একটি উদাহরণ দিতে onCreateDialog() পদ্ধতিটি সংজ্ঞায়িত করুন।
  • ব্যবহারকারী যখন সময় সেট করে তখন একটি কলব্যাক পেতে TimePickerDialog.OnTimeSetListener ইন্টারফেসটি প্রয়োগ করুন৷

এখানে একটি উদাহরণ:

কোটলিন

class TimePickerFragment : DialogFragment(), TimePickerDialog.OnTimeSetListener {

    override fun onCreateDialog(savedInstanceState: Bundle): Dialog {
        // Use the current time as the default values for the picker.
        val c = Calendar.getInstance()
        val hour = c.get(Calendar.HOUR_OF_DAY)
        val minute = c.get(Calendar.MINUTE)

        // Create a new instance of TimePickerDialog and return it.
        return TimePickerDialog(activity, this, hour, minute, DateFormat.is24HourFormat(activity))
    }

    override fun onTimeSet(view: TimePicker, hourOfDay: Int, minute: Int) {
        // Do something with the time the user picks.
    }
}

জাভা

public static class TimePickerFragment extends DialogFragment
                            implements TimePickerDialog.OnTimeSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker.
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it.
        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Do something with the time the user picks.
    }
}

কনস্ট্রাক্টর আর্গুমেন্ট সম্পর্কে তথ্যের জন্য TimePickerDialog ক্লাসটি দেখুন।

এখন আপনার শুধু একটি ইভেন্ট দরকার যা আপনার কার্যকলাপে এই খণ্ডটির একটি উদাহরণ যোগ করে।

টাইম পিকার দেখান

আপনি পূর্ববর্তী উদাহরণের মতো একটি DialogFragment সংজ্ঞায়িত করার পরে, আপনি DialogFragment একটি উদাহরণ তৈরি করে এবং show() পদ্ধতিতে কল করে সময় চয়নকারী প্রদর্শন করতে পারেন।

উদাহরণস্বরূপ, এখানে একটি বোতাম আছে যা ট্যাপ করা হলে ডায়ালগ দেখানোর জন্য একটি পদ্ধতি কল করে:

<Button
    android:id="@+id/pickTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Pick time" />

যখন ব্যবহারকারী এই বোতামটি ট্যাপ করে, সিস্টেমটি নিম্নলিখিত পদ্ধতিটি কল করে:

কোটলিন

findViewById<Button>(R.id.pickTime).setOnClickListener {
    TimePickerFragment().show(supportFragmentManager, "timePicker")
}

জাভা

findViewById<Button>(R.id.pickTime).setOnClickListener {
    TimePickerFragment().show(supportFragmentManager, "timePicker");
}

এই পদ্ধতিটি পূর্ববর্তী উদাহরণে সংজ্ঞায়িত DialogFragment একটি নতুন উদাহরণে show() কল করে। show() পদ্ধতিতে FragmentManager একটি উদাহরণ এবং খণ্ডটির জন্য একটি অনন্য ট্যাগ নাম প্রয়োজন।

একটি তারিখ পিকার তৈরি করুন

একটি DatePickerDialog তৈরি করা একটি TimePickerDialog তৈরি করার মতো। পার্থক্য হল খণ্ডটির জন্য আপনি যে ডায়ালগ তৈরি করেন।

DialogFragment ব্যবহার করে একটি DatePickerDialog প্রদর্শন করতে, একটি ফ্র্যাগমেন্ট ক্লাস সংজ্ঞায়িত করুন যা DialogFragment প্রসারিত করে এবং ফ্র্যাগমেন্টের onCreateDialog() পদ্ধতি থেকে একটি DatePickerDialog ফেরত দেয়।

ডেট পিকারের জন্য ডায়ালগ ফ্র্যাগমেন্ট প্রসারিত করুন

একটি DatePickerDialog এর জন্য একটি DialogFragment সংজ্ঞায়িত করতে, নিম্নলিখিতগুলি করুন:

  • DatePickerDialog এর একটি উদাহরণ দিতে onCreateDialog() পদ্ধতিটি সংজ্ঞায়িত করুন।
  • ব্যবহারকারী যখন তারিখ সেট করে তখন একটি কলব্যাক পেতে DatePickerDialog.OnDateSetListener ইন্টারফেসটি প্রয়োগ করুন৷

এখানে একটি উদাহরণ:

কোটলিন

class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {

    override fun onCreateDialog(savedInstanceState: Bundle): Dialog {
        // Use the current date as the default date in the picker.
        val c = Calendar.getInstance()
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH)
        val day = c.get(Calendar.DAY_OF_MONTH)

        // Create a new instance of DatePickerDialog and return it.
        return DatePickerDialog(requireContext(), this, year, month, day)

    }

    override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) {
        // Do something with the date the user picks.
    }
}

জাভা

public static class DatePickerFragment extends DialogFragment
                            implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker.
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        // Create a new instance of DatePickerDialog and return it.
        return new DatePickerDialog(requireContext(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date the user picks.
    }
}

কনস্ট্রাক্টর আর্গুমেন্ট সম্পর্কে তথ্যের জন্য DatePickerDialog ক্লাস দেখুন।

আপনার শুধু একটি ইভেন্ট দরকার যা আপনার কার্যকলাপে এই খণ্ডটির একটি উদাহরণ যোগ করে।

তারিখ পিকার দেখান

আপনি পূর্ববর্তী উদাহরণের মত একটি DialogFragment সংজ্ঞায়িত করার পরে, আপনি DialogFragment এবং কলিং show() এর একটি উদাহরণ তৈরি করে তারিখ পিকার প্রদর্শন করতে পারেন।

উদাহরণস্বরূপ, এখানে একটি বোতাম আছে যা ট্যাপ করা হলে ডায়ালগ দেখানোর জন্য একটি পদ্ধতি কল করে:

<Button
    android:id="@+id/pickDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Pick date"/>

যখন ব্যবহারকারী এই বোতামটি ট্যাপ করে, সিস্টেমটি নিম্নলিখিত পদ্ধতিটি কল করে:

কোটলিন

findViewById<Button>(R.id.pickDate).setOnClickListener {
    val newFragment = DatePickerFragment()
    newFragment.show(supportFragmentManager, "datePicker")
}

জাভা

findViewById<Button>(R.id.pickDate).setOnClickListener {
    val newFragment = DatePickerFragment();
    newFragment.show(supportFragmentManager, "datePicker");
}

এই পদ্ধতিটি পূর্ববর্তী উদাহরণে সংজ্ঞায়িত DialogFragment একটি নতুন উদাহরণে show() কল করে। show() পদ্ধতিতে FragmentManager একটি উদাহরণ এবং খণ্ডটির জন্য একটি অনন্য ট্যাগ নাম প্রয়োজন।

অটোফিল সহ পিকার ব্যবহার করুন

2017 সালে, Android অটোফিল ফ্রেমওয়ার্ক চালু করেছে, যা ব্যবহারকারীদের ডেটা সংরক্ষণ করতে দেয় যা বিভিন্ন অ্যাপে ফর্ম পূরণ করতে ব্যবহার করা যেতে পারে। বাছাইকারীরা একটি UI প্রদান করে অটোফিল পরিস্থিতিতে কার্যকর হতে পারে যা ব্যবহারকারীদের তারিখ বা সময় ডেটা সঞ্চয় করে এমন একটি ক্ষেত্রের মান পরিবর্তন করতে দেয়। উদাহরণস্বরূপ, একটি ক্রেডিট কার্ড ফর্মে, একটি তারিখ চয়নকারী ব্যবহারকারীদের তাদের ক্রেডিট কার্ডের মেয়াদ শেষ হওয়ার তারিখ লিখতে বা পরিবর্তন করতে দেয়।

যেহেতু বাছাইকারীরা ডায়ালগ, সেগুলি অন্যান্য ক্ষেত্রের সাথে একটি কার্যকলাপে প্রদর্শিত হয় না৷ বাছাইকারী দৃশ্যমান না হলে বাছাইকারী ডেটা প্রদর্শন করতে, আপনি অন্য একটি ভিউ ব্যবহার করতে পারেন, যেমন একটি EditText , যা পিকারটি দৃশ্যমান না হলে মানটি প্রদর্শন করতে পারে।

একটি EditText অবজেক্ট নেটিভভাবে AUTOFILL_TYPE_TEXT টাইপের স্বতঃপূর্ণ ডেটা আশা করে। বিপরীতে, অটোফিল পরিষেবাগুলি এটির একটি উপযুক্ত উপস্থাপনা তৈরি করতে AUTOFILL_TYPE_DATE হিসাবে ডেটা সংরক্ষণ করে৷ প্রকারের অসঙ্গতি সমাধানের জন্য, আমরা সুপারিশ করেছি যে আপনি একটি কাস্টম ভিউ তৈরি করুন যা EditText থেকে উত্তরাধিকারসূত্রে পাওয়া যায় এবং AUTOFILL_TYPE_DATE প্রকারের মানগুলি সঠিকভাবে পরিচালনা করার জন্য প্রয়োজনীয় পদ্ধতিগুলি প্রয়োগ করে।

EditText এর একটি সাবক্লাস তৈরি করতে নিম্নলিখিত পদক্ষেপগুলি নিন যা AUTOFILL_TYPE_DATE প্রকারের মানগুলি পরিচালনা করতে পারে:

  1. EditText থেকে উত্তরাধিকারসূত্রে পাওয়া একটি ক্লাস তৈরি করুন।
  2. getAutofillType() পদ্ধতিটি প্রয়োগ করুন, যা AUTOFILL_TYPE_DATE এ ফেরত দেয়।
  3. getAutofillValue() পদ্ধতিটি প্রয়োগ করুন, যা একটি AutofillValue অবজেক্ট প্রদান করে যা মিলিসেকেন্ডে তারিখটি উপস্থাপন করে। রিটার্ন অবজেক্ট তৈরি করতে, একটি AutofillValue অবজেক্ট তৈরি করতে forDate() পদ্ধতি ব্যবহার করুন।
  4. autofill() পদ্ধতি প্রয়োগ করুন। এই পদ্ধতিটি AutofillValue প্যারামিটার পরিচালনা করার জন্য যুক্তি প্রদান করে, যা AUTOFILL_TYPE_DATE প্রকারের। প্যারামিটারটি পরিচালনা করতে, এটির একটি সঠিক স্ট্রিং উপস্থাপনা তৈরি করুন, যেমন mm/yyyy । আপনার দর্শনের text বৈশিষ্ট্য সেট করতে স্ট্রিং উপস্থাপনা ব্যবহার করুন।
  5. ব্যবহারকারী যখন EditText এর কাস্টম সাবক্লাসে তারিখ সম্পাদনা করতে চায় তখন একটি পিকার প্রদর্শন করে এমন কার্যকারিতা প্রয়োগ করুন। ভিউ text প্রপার্টি আপডেট করে একটি স্ট্রিং রিপ্রেজেন্টেশনের সাথে যেটি ব্যবহারকারী পিকারে বেছে নেয়।

EditText এর একটি সাবক্লাসের উদাহরণের জন্য যা AUTOFILL_TYPE_DATE মানগুলি পরিচালনা করে, Java বা Kotlin- এ অটোফিল ফ্রেমওয়ার্ক নমুনা দেখুন।

আপনার কাস্টম দৃশ্যগুলির জন্য স্বতঃপূর্ণ সমর্থন প্রমাণ করার বিষয়ে আরও জানতে, অটোফিল ফ্রেমওয়ার্ক দেখুন।