如何使用两个按钮实现多个日期选择器功能并保存选择的日期?

艾曼·巴图尔

我想创建一个活动,在其中我要有两个按钮和多个标签。用户可以单击按钮以选择日期和结束日期。而那些选择的日期可以显示在标签中,以便用户可以知道用户已经选择了哪些日期。

谁能指导我该怎么做。

  1. 使用多个日期选择器功能,并且两个按钮上只有两个日期选择器。
  2. 我该如何保存这些日期。因此,只要用户离开此活动并再次访问,他可能就会知道。
达瓦尔·帕特尔(Dhaval Patel)

我已经创建了DatePickerFragment帮助程序类,使用它您可以仅通过单个DatePickerFragment类选择任意数量的日期。

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    /**
     * The callback interface used to indicate the user is done filling in the date (they clicked on the 'Set' button).
     */
    public interface OnDateSetListener {

        /**
         * @param dialog The view associated with this listener.
         * @param year The year that was set.
         * @param monthOfYear The monthOfYear that was set.
         * @param dayOfMonth The dayOfMonth that was set.
         */
        void onDateSet(DatePicker dialog, int year, int monthOfYear, int dayOfMonth, int reqCode);
    }

    private OnDateSetListener mListener;
    private int reqCode;
    public void setOnDateSetListener(OnDateSetListener mListener, int reqCode){
        this.mListener  = mListener;
        this.reqCode = reqCode;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        int year;
        int month;
        int day;
        final Calendar c = Calendar.getInstance();
        Bundle bundle = this.getArguments();
        if(bundle!=null) {
            // Use the given date as the default date in the picker
            year = bundle.getInt("YEAR");
            month = bundle.getInt("MONTH");
            day = bundle.getInt("DAY");
        }else{
            // Use the current date as the default date in the picker
            year = c.get(Calendar.YEAR);
            month = c.get(Calendar.MONTH);
            day = c.get(Calendar.DAY_OF_MONTH);
        }

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

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        if(mListener!=null)
            mListener.onDateSet(view, year, monthOfYear, dayOfMonth, reqCode);
        this.dismiss();
    }
}

在活动或片段中使用它

public class MainActivity extends FragmentActivity implements DatePickerFragment.OnDateSetListener {
    private static final int FROM_DATE_TAG = 2404;
    private static final int TO_DATE_TAG = 2405;

    @Override
    public void onClick(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        DatePickerFragment fragment;
        switch(view.getId()){
        case R.id.fromDate:
            fragment = new DatePickerFragment();
            fragment.setOnDateSetListener(this, FROM_DATE_TAG);
            fragment.show(fragmentManager, "Date Picker");
            break;
        case R.id.toDate:
            fragment = new DatePickerFragment();
            fragment.setOnDateSetListener(this, TO_DATE_TAG);
            fragment.show(fragmentManager, "Date Picker");
            break;
        }
    }

    //If you want to update the alredy selected date, Specify it in budle. DatePickerFragment will take specified bundle date as default date.
    private void updateDate() {
        //get to date stored in SharedPrefrence
        String toDate = SharedPrefrenceUtils.getString(mContext, "FROM_DATE");
        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
        Date parse = sdf.parse(toDate);
        Calendar c = Calendar.getInstance();
        c.setTime(parse);
        FragmentManager fragmentManager = this.getActivity().getSupportFragmentManager();
        DatePickerFragment fragment = new DatePickerFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("YEAR", c.get(Calendar.YEAR));
        bundle.putInt("MONTH", c.get(Calendar.MONTH));
        bundle.putInt("DAY", c.get(Calendar.DATE));
        fragment.setArguments(bundle);
        fragment.setOnDateSetListener(this, FROM_DATE_TAG);
        fragment.show(fragmentManager, "Date Picker");
    }

    @Override
    public void onDateSet(DatePicker dialog, int year, int monthOfYear, int dayOfMonth, int reqCode) {
        if(reqCode == FROM_DATE_TAG){
            Calendar myCalendar  = Calendar.getInstance();
            myCalendar.set(year, monthOfYear, dayOfMonth);
            SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
            String dateString = formatter.format(myCalendar.getTime());
            Log.i("From Date","DATE:"+dateString);//"Result = DATE:May 24, 2015"
            //Store FROM_DATE in SharedPrefrence
            SharedPrefrenceUtils.putString(mContext,"FROM_DATE", dateString);
        } else if(reqCode == TO_DATE_TAG){
            Calendar myCalendar  = Calendar.getInstance();
            myCalendar.set(year, monthOfYear, dayOfMonth);
            SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy", Locale.getDefault());
            String dateString = formatter.format(myCalendar.getTime());
            Log.i("To Date","DATE:"+dateString);//"Result = DATE:May 25, 2015"
            //Store TO_DATE in SharedPrefrence
            SharedPrefrenceUtils.putString(mContext,"TO_DATE", dateString);
        }
    }
}

请参阅如何在Fragment中显示SharedPreference存储的数据?SharedPrefrenceUtils类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Bootstrap 3在同一行上获得两个日期时间选择器?

来自分类Dev

引导日期选择器修改为两个日期

来自分类Dev

如何在ACF日期选择器中为Wordpress中的开始日期和结束日期限制两个日期?

来自分类Dev

如何在日期时间选择器中使用两个验证器

来自分类Dev

如何使用引导日期选择器?

来自分类Dev

如何在实现日期选择器中设置日期

来自分类Dev

单击第二个日期选择器时如何获取两个日期选择器之间的日期差?

来自分类Dev

jQuery datepicker最大日期最小日期控件,使用两个日期选择器

来自分类Dev

如何使用滑块实现Jquery日期时间选择器

来自分类Dev

两个日期之间的日期选择器差异失败

来自分类Dev

C#foreach循环遍历两个日期选择器之间的所有日期

来自分类Dev

如何在页面上使用多个日期选择器

来自分类Dev

Javascript / jQuery两个日期选择器计算日期范围

来自分类Dev

如何保存两个日期选择器数据

来自分类Dev

如何在Android中添加两个日期选择器?

来自分类Dev

日期选择器-显示两个日期之间的时间(UIDatePickerModeDateAndTime)

来自分类Dev

带按钮的多个角度ui引导日期选择器

来自分类Dev

如何在日期时间选择器中使用两个验证器

来自分类Dev

如何在Android中显示两个不同的日期选择器

来自分类Dev

如何使用引导日期选择器?

来自分类Dev

从日期选择器保存日期

来自分类Dev

如何创建多个日期选择器

来自分类Dev

如何在 Android 中减去两个日期选择器?

来自分类Dev

如何使用 Bootstrap 日期选择器?

来自分类Dev

如何多次使用日期选择器?

来自分类Dev

如何使两个日期选择器在 html 中相互依赖?

来自分类Dev

如何检查日期选择器中两个日期之间的验证

来自分类Dev

如何在两个日期选择器之间使用验证?

来自分类Dev

使用日期选择器和实体框架 6 获取两个日期之间的所有日期

Related 相关文章

  1. 1

    使用Bootstrap 3在同一行上获得两个日期时间选择器?

  2. 2

    引导日期选择器修改为两个日期

  3. 3

    如何在ACF日期选择器中为Wordpress中的开始日期和结束日期限制两个日期?

  4. 4

    如何在日期时间选择器中使用两个验证器

  5. 5

    如何使用引导日期选择器?

  6. 6

    如何在实现日期选择器中设置日期

  7. 7

    单击第二个日期选择器时如何获取两个日期选择器之间的日期差?

  8. 8

    jQuery datepicker最大日期最小日期控件,使用两个日期选择器

  9. 9

    如何使用滑块实现Jquery日期时间选择器

  10. 10

    两个日期之间的日期选择器差异失败

  11. 11

    C#foreach循环遍历两个日期选择器之间的所有日期

  12. 12

    如何在页面上使用多个日期选择器

  13. 13

    Javascript / jQuery两个日期选择器计算日期范围

  14. 14

    如何保存两个日期选择器数据

  15. 15

    如何在Android中添加两个日期选择器?

  16. 16

    日期选择器-显示两个日期之间的时间(UIDatePickerModeDateAndTime)

  17. 17

    带按钮的多个角度ui引导日期选择器

  18. 18

    如何在日期时间选择器中使用两个验证器

  19. 19

    如何在Android中显示两个不同的日期选择器

  20. 20

    如何使用引导日期选择器?

  21. 21

    从日期选择器保存日期

  22. 22

    如何创建多个日期选择器

  23. 23

    如何在 Android 中减去两个日期选择器?

  24. 24

    如何使用 Bootstrap 日期选择器?

  25. 25

    如何多次使用日期选择器?

  26. 26

    如何使两个日期选择器在 html 中相互依赖?

  27. 27

    如何检查日期选择器中两个日期之间的验证

  28. 28

    如何在两个日期选择器之间使用验证?

  29. 29

    使用日期选择器和实体框架 6 获取两个日期之间的所有日期

热门标签

归档