DatePicker 控件在5.0以上版本 焦點釋放問題 手動輸入點擊確定按鈕不能正確獲取到日期優化



    /**
     * 彈出日期時間選擇框方法
     * 
     * @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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章