Android 使用原生TimePickerDialog 无法获取输入状态下时间的问题(附赠计算上班时长方法)

主要是在获取时间之前释放焦点

上代码:

Calendar calendar= Calendar.getInstance(Locale.CHINA);


/**
     * 时间选择
     * @param activity
     * @param themeResId  展示样式  我只用过 1
     * @param tv  用来显示时间的控件
     * @param calendar
     */
    public static void showTimePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) {
        // Calendar c = Calendar.getInstance();
        // 创建一个TimePickerDialog实例,并把它显示出来
        // 解释一哈,Activity是context的子类
        TimePickerDialog time = new TimePickerDialog(activity, themeResId,
                // 绑定监听器
                new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        Log.i("time", hourOfDay + "" + minute);
                        String hourStr;
                        String minStr;
                        if (hourOfDay < 10) {
                            hourStr = "0" + hourOfDay;
                        } else {
                            hourStr = hourOfDay + "";
                        }
                        if (minute < 10) {
                            minStr = "0" + minute;
                        } else {
                            minStr = minute + "";
                        }

                        tv.setText(hourStr + ":" + minStr);
                    }
                }
                // 设置初始时间
                , calendar.get(Calendar.HOUR_OF_DAY)
                , calendar.get(Calendar.MINUTE)
                // true表示采用24小时制
                , true){
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //先释放焦点  然后引用onClick方法
                //焦点释放处理
                if (dialog instanceof TimePickerDialog) {
                                  ((TimePickerDialog)dialog).getWindow().getDecorView().clearFocus();
                }
                super.onClick(dialog, which);
            }
        };
        time.show();

    }
调用:
showTimePickerDialog(this,1,tvDownTime,calendar);

附赠计算上班时长的方法:

 /**
     * 计算时差
     */
    public void countTime(){
        String up = tvUpTime.getText().toString();//(上班时间)
        String down = tvDownTime.getText().toString();//(下班时间)
        String[] up1 = up.split(":");
        String[] down1 = down.split(":");
        int upHour=Integer.getInteger(up1[0]);
        int upMin=Integer.getInteger(up1[1]);
        int downHour=Integer.getInteger(down1[0]);
        int downMin=Integer.getInteger(down1[1]);

        int tempHour;
        int tempMin;

        if(upHour>downHour){
            Toast.makeText(this, "打卡时间不符合要求", Toast.LENGTH_SHORT).show();
        }else if(upHour==downHour&&upMin>=downMin){
            Toast.makeText(this, "打卡时间不符合要求", Toast.LENGTH_SHORT).show();
        }else {
            tempHour=downHour-upHour;
            if(upMin>downMin){//例如  9:15    到   18:00
                tempHour--;//8
                tempMin=60-(upMin-downMin);//45
                Toast.makeText(this, "上班时长"+tempHour+"小时"+tempMin+"分钟", Toast.LENGTH_SHORT).show();
            }else {
                tempMin=downMin-upMin;
                Toast.makeText(this, "上班时长"+tempHour+"小时"+tempMin+"分钟", Toast.LENGTH_SHORT).show();
            }

        }
    }
发布了15 篇原创文章 · 获赞 2 · 访问量 5240

猜你喜欢

转载自blog.csdn.net/qq_41985689/article/details/102975100
今日推荐