DatePicker 控件在5.0以上版本 焦点释放问题 手动输入点击确定按钮不能正确获取到日期优化

来源:互联网 发布:力学分析软件 编辑:程序博客网 时间:2024/05/17 14:26


    /**
     * 弹出日期时间选择框方法
     * 
     * @param inputDate
     *            :为需要设置的日期时间文本编辑框
     * 
     * @param title
     *            : 对话框标题
     * 
     * @param setMaxDate
     *            : true 设置最大值为当天
     * 
     * @return
     */
    public AlertDialog dateTimePicKDialog(final TextView inputDate,
            String title, boolean setMaxDate) {
        LinearLayout dateTimeLayout = (LinearLayout) activity
                .getLayoutInflater().inflate(R.layout.common_datetime, null);
        datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
        String initDateTime = null;
        String data1 = CommonUtils.getTvResult(inputDate);
        if (!TextUtils.isEmpty(data1)) {
            String year = data1.substring(0, data1.indexOf("-"));
            String month = data1.substring(data1.indexOf("-") + 1,
                    data1.lastIndexOf("-"));
            String day = data1.substring(data1.lastIndexOf("-") + 1,
                    data1.length());
            initDateTime = year + "年" + month + "月" + day + "日";
        }
        init(datePicker, initDateTime, setMaxDate);
        ad = new AlertDialog.Builder(activity)
                .setTitle(title)
                .setView(dateTimeLayout)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        // 焦点释放处理
                        if (datePicker instanceof DatePicker) {
                            ((DatePicker) datePicker).clearFocus();
                        }
                        inputDate.setText(dateTime);
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        inputDate.setText("");
                    }
                }).show();
        onDateChanged(null, 0, 0, 0);
        return ad;
    }


    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        onDateChanged(null, 0, 0, 0);
    }


    public void onDateChanged(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // 获得日历实例
        Calendar calendar = Calendar.getInstance();
        calendar.set(datePicker.getYear(), datePicker.getMonth(),
                datePicker.getDayOfMonth());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        dateTime = sdf.format(calendar.getTime());
        // ad.setTitle(dateTime);
    }
0 0
原创粉丝点击