时间选择器,不同系统版本差异的解决办法

    今天因为业务需求,选择开始时间和结束时间,需要实现一个时间选择器,自然而然的就想到了利用系统的时间选择器

效果如下:

    

实现这种效果其实也简单
    

Calendar c = Calendar.getInstance();
dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

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

            }

        }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dialog.show();

本来测试用的机器大部分都是4.0的机器,代码运行时有一个bug,上面的OnDateSetListener回调会调用 两次
所以后续加入代码去控制,加入变量i去控制
  

Calendar c = Calendar.getInstance();
int i=1;
dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                if (i % 2 == 0) {
                        changeDialog(year, monthOfYear, dayOfMonth);
                    }
                    i++;
            }

        }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dialog.show();

运行完毕本以为没什么问题,4.x机器运行良好,但是后来5.x机器上发现Bug,此回调只会执行 一次

所以加上判断系统的版本代码:

Calendar c = Calendar.getInstance();
int i=1;
dialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
               if (Build.VERSION.SDK_INT>20){
                    changeDialog(year, monthOfYear, dayOfMonth);
                }else{
                    if (i % 2 == 0) {
                        changeDialog(year, monthOfYear, dayOfMonth);
                    }
                    i++;
                }
            }

        }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
dialog.show();

代码如上 先判断系统版本号 之后再进行操作 其中

  changeDialog(year, monthOfYear, dayOfMonth) 是我自己本身的业务逻辑,

博客记录一下,方便有此问题的童鞋有所帮助!

时间: 2024-10-10 08:36:06

时间选择器,不同系统版本差异的解决办法的相关文章

微信小程序 免费SSL证书https、TLS版本问题的解决办法

这篇文章主要介绍了微信小程序 免费SSL证书https.TLS版本问题的解决办法的相关资料,需要的朋友可以参考下 微信小程序 免费SSL证书https.TLS版本问题的解决办法 微信小程序与第三方服务器通讯的域名5个必要条件 1.一个已备案的域名,不是localhost.也不是127.0.0.1,域名不能加端口 2.加ssl证书,也就是https://~~~ 4.HTTPS 服务器的 TLS 版本支持1.2及以下版本,一般就是1.0.1.1.1.2要同时支持这三个版本,一个也不能少,要不然就会出

MyEclipse迁移过程中Tomcat版本不一致的解决办法

MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下problems那栏的错误: 看见这个迁移过程中Tomcat版本不一致的错误,知道了就比较简单,不知道的时候就比较难了,解决办法如下: 1.查找到MyEclipse里面的菜单栏里面的MyEclipse 2.点击MyEclipse里面的Migrate Projects选项后,就出现如下图: 3.点击上图里

ios替换app启动图片时系统报错的解决办法

ios替换app启动图片时系统报错的解决办法:我个人建议是在开发时候经常行的保存项目,并且在修改项目图标图片.app启动图片前,一定要先备份一份没有添加这两项图片的项目. 如果您的项目已经开发完成了,进入到发布前添加项目图标.app启动图片的时候,一定要确定了这两项的所有图片不会更改了再去添加,否则更改已经添加好的加项目图标.app启动图片就会报错, 如果您报错了,百度之后也没有解决办法,那么就尝试在已经备份的项目中重新去添加图片就可以了.

photoshop cc 版本安装失败解决办法

好久没有碰ps,看了下在ps版本都到cc了.忍不住也想尝试最新版本,但是安装出现了很多问题,导致我花了很多时间才搞定,现在分享给大家几点经验吧. Exit Code: 34 Please see specific errors below for troubleshooting. For example, ERROR: -------------------------------------- Summary -------------------------------------- - 1

CentOS误删除glibc导致系统系统一系列错误的解决办法

因为升级glibc不成功,将老版本的glibc删除,导致系统大部分命令都不能使用,系统不能正常启动.解决办法如下:系统:CentOS release 6.5 (Final)内核:2.6.32-431.el6.x86_64插入系统盘选择系统救援模式默认会将原操作系统挂在到/mnt/sysimage目录下#chroot /mnt/sysimage //切换到原操作系统#mkdir /mnt/cdrom //创建光驱挂载目录#mount /dev/sr0 /mnt/cdrom //挂在光驱#cd /m

AIX系统root密码丢失解决办法

AIX系统root密码丢失解决   在对AIX操作系统的日常管理中,经常忘记或丢失root密码,这时候就需要重置root密码.AIX系统丢失root密码,可以使用系统安装光盘或备份rootvg的磁带两种方法重置 root密码 说明:如果用系统安装光盘修改,光盘版本号要保持和AIX系统一致 1.1     AIX安装光盘重置root密码,步骤如下: 1.1.1     将AIX第一张安装光盘放入光驱中,开机启动,如果系统默认从光驱引导,跳到3.1.11,否则按以下步骤从SMS中设置光驱引导 1.1

Vivado SDK 2014.2 创建新工程后,BSP版本不对的解决办法

问题描述如下: 1. 使用Vivado SDK 2014.2已经创建了工程,但是此时,hdf文件增加了外设,需要重新创建工程以更新SDK中的外设描述: 2. 使用新的hdf创建工程后,发现system.mss文件中有些外设的BSP包名称显示为红色,把system.mss改成可编辑模式后,看到外设对于的BSP包版本不对: 3. 由于外设的BSP包版本不对,导致工程编辑错误,无法生成elf文件. 解决办法: 使用新的hdf文件重新创建工程之前,先在Xilinx Tools --> Repositor

Xshell4连接,Linux系统中文显示乱码解决办法

Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET NetSarang Xshell 4 Build 0120议.使用Xshell可以快速方便的管理Linux主机等 但是有时我们使用,经常遇到.linux下中文显示乱码的情况,其实解决办法很简单,下面跟着小编来看看,如何解决XShell连接linux中文乱码 工具/原料 Linux系统(Centos)  Xshell Xshell连接Linux系统 1 Xshell

Django模型迁移提示版本不匹配解决办法

Django迁移模型时提示django.core.exceptions.ImproperlyConfigured:mysqlclient 1.3.7 or newer is required; you have 0.9.3.错误解决办法 造成此错误提示是以为mysql服务器版本与Django内置的版本不一样造成的,可以通过修改源码的方式取消比对即可正常运行! 源码文件路径:你的虚拟环境目录下的lib目录下python工具包里面:比如的我python环境为dj_xm31,虚拟机位置在当前用户的.v