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();
            }

        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章