在iOS开发中使用block回调是很普遍的,当然在Android中也有回调可以使用,但是形式不太一样,更像是iOS中的代理模式,在这里我们不单独介绍Android中回调的使用,而是结合时间选择器一起使用,简单粗暴直接上代码

package com.example.jizhigang.crm_android_j.utils;import android.app.Activity;import android.app.DatePickerDialog;import android.app.TimePickerDialog;import android.util.Log;import android.widget.DatePicker;import android.widget.TimePicker;import java.util.Calendar;/*时间、日期选择器*/public class DatePickerHelper {    /*    * 日期选择器的回调    * 格式 年-月-日    * */    public interface OnDateSelectedBlock {        void onDateSelected(int year, int month, int dayOfMonth);    }    /*    * 时间选择器的回调    * 格式 时-分    * */    public interface OnTimeSelectedBlock {        void onTimeSelected(int hour, int min);    }    /**     * 日期选择 年-月-日     * @param activity     * @param themeResId     * @param calendar     */    public static void showDatePickerDialog(final Activity activity, int themeResId, Calendar calendar, final OnDateSelectedBlock block) {        // 直接创建一个DatePickerDialog对话框实例,并将它显示出来        new DatePickerDialog(activity, themeResId, new DatePickerDialog.OnDateSetListener() {            // 绑定监听器(How the parent is notified that the date is set.)            @Override            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {                // 此处得到选择的时间,可以进行你想要的操作                block.onDateSelected(year,monthOfYear,dayOfMonth);            }        }                // 设置初始日期                , calendar.get(Calendar.YEAR)                , calendar.get(Calendar.MONTH)                , calendar.get(Calendar.DAY_OF_MONTH)        ).show();    }                /**     * 时间选择 时-分     * @param activity     * @param themeResId     * @param calendar     */    public static void showTimePickerDialog(Activity activity, int themeResId, Calendar calendar, final OnTimeSelectedBlock block) {        // Calendar c = Calendar.getInstance();        // 创建一个TimePickerDialog实例,并把它显示出来        // 解释一哈,Activity是context的子类        new TimePickerDialog( activity,themeResId,                // 绑定监听器                new TimePickerDialog.OnTimeSetListener() {                    @Override                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {                        block.onTimeSelected(hourOfDay,minute);                    }                }                // 设置初始时间                , calendar.get(Calendar.HOUR_OF_DAY)                , calendar.get(Calendar.MINUTE)                // true表示采用24小时制                ,true).show();    }    }

首先在需要使用的activity中声明

    /*日期回调*/    private DatePickerHelper.OnDateSelectedBlock dateSelectedBlock = new DatePickerHelper.OnDateSelectedBlock() {        @Override        public void onDateSelected(int year, int month, int dayOfMonth) {            Log.d("日期选择器回调",String.valueOf(year)+"年"+String.valueOf(month+1)+"月"+String.valueOf(dayOfMonth)+"号");        }    };    /*时间回调*/    private DatePickerHelper.OnTimeSelectedBlock timeSelectedBlock = new DatePickerHelper.OnTimeSelectedBlock() {        @Override        public void onTimeSelected(int hour, int min) {            Log.d("时间选择器回调",String.valueOf(hour)+"时"+String.valueOf(min)+"分");        }    };

使用方法

 /*年月日时间选择器*/Calendar calendar= Calendar.getInstance(Locale.CHINA);DatePickerHelper.showDatePickerDialog(getActivity(),2,calendar,dateSelectedBlock);
Android时间选择器以及回调的使用_第1张图片 img-01.jpg
/*时分时间选择器*/Calendar calendar= Calendar.getInstance(Locale.CHINA);DatePickerHelper.showTimePickerDialog(getActivity(),2,calendar,timeSelectedBlock);
Android时间选择器以及回调的使用_第2张图片 img-02.jpg

我们在这里将themeResId设置为2是这种样式,修改这个值为其他值还有其他样式可选,这里就不详细介绍了。

回调参考文章
https://blog.csdn.net/qq_31881469/article/details/80089675

时间选择器参考文章
https://blog.csdn.net/ceaningking/article/details/89916700

更多相关文章

  1. android 取现在时间和以前的时间做差 求出天数 时间 和分钟数
  2. Android开发中 获取当前Android的年月日时分秒的时间
  3. 设置系统超时时间
  4. 转载 Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
  5. 第32章、日期对话框DatePickerDialog(从零开始学Android)
  6. Android时间获取之——Date、String、Long三种日期类型之间的相
  7. android 日期选择器自由天数内展示

随机推荐

  1. 系出名门Android(9) - 数据库支持(SQLite
  2. android parcelable 详细介绍
  3. Android 高德地图 Native method not fou
  4. Android Material Design: NavigationVie
  5. android UI小结(二)
  6. AIDL——Android接口描述语言
  7. anroid的RelativeLayout的一些xml配置
  8. 【Android】Android 广播大全
  9. Android程序开发中关于设置全屏无效问题
  10. android去除ImageButton白色边框