Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
日期选择器android上的取消按钮_Android_Android Widget_Android Datepicker - Fatal编程技术网

日期选择器android上的取消按钮

日期选择器android上的取消按钮,android,android-widget,android-datepicker,Android,Android Widget,Android Datepicker,我有一个FromDateEditText,其中添加了一个图像。现在,当我单击图像时,会显示一个Datepicker。现在,当我选择某个日期并单击设置按钮时,日期在编辑文本中设置。问题是,当我单击“取消按钮”时,日期选择器不见了,上一个活动在我按“上一步”之前不会获得焦点!屏幕上没有触摸事件。 请帮助…我不相信这是最好的方法…但是下面的代码是如何工作的;从这个链接得到一些指导 由于我有一个项目交付,这对我来说现在的工作。然而,我仍然在寻找一个体面的方式来处理这个问题。android平台是否不像处

我有一个FromDate
EditText
,其中添加了一个图像。现在,当我单击图像时,会显示一个
Datepicker
。现在,当我选择某个日期并单击设置按钮时,日期在编辑文本中设置。问题是,当我单击“取消
按钮”
时,日期选择器不见了,上一个活动在我按“上一步”之前不会获得焦点!屏幕上没有触摸事件。
请帮助…

我不相信这是最好的方法…但是下面的代码是如何工作的;从这个链接得到一些指导


由于我有一个项目交付,这对我来说现在的工作。然而,我仍然在寻找一个体面的方式来处理这个问题。android平台是否不像处理其他对话框那样处理取消按钮?

我不认为这是最好的方法……但下面的代码是如何工作的;从这个链接得到一些指导


由于我有一个项目交付,这对我来说现在的工作。然而,我仍然在寻找一个体面的方式来处理这个问题。android平台是否不像处理其他对话框那样处理取消按钮?

我已经实现了带有取消事件处理和使用EditText的日期选择器。。可能对想清除取消活动文本的人有帮助

private EditText dob;
    static final int DATE_DIALOG_ID = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.browse);


        dob = (EditText) findViewById(R.id.txtDob);
                /* For DOB EditText */
        dob.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (v == dob)
                    showDialog(DATE_DIALOG_ID);
                return false;
            }
        });
}


    @Override
    protected Dialog onCreateDialog(int id) {
        final int cyear, cmonth, cday;

        if (dob.getText().equals("")) {
            Calendar c = Calendar.getInstance();
            cyear = c.get(Calendar.YEAR);
            cmonth = c.get(Calendar.MONTH);
            cday = c.get(Calendar.DAY_OF_MONTH);
        } else {
            String[] datestr = dob.getText().toString().split("-");
            cyear = Integer.parseInt(datestr[0]);
            cmonth = Integer.parseInt(datestr[1]);
            cday = Integer.parseInt(datestr[2]);
        }
        switch (id) {
        case DATE_DIALOG_ID:
            // return new DatePickerDialog(this, mDateSetListener, cyear,
            // cmonth,cday);
            DatePickerDialog dateDlg = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {
                        public void onDateSet(DatePicker view, int year,
                                int monthOfYear, int dayOfMonth) {
                            String date_selected = String.valueOf(year)
                                    + "-"
                                    + ((String.valueOf(monthOfYear + 1)
                                            .length() == 1 ? "0"
                                            + String.valueOf(monthOfYear + 1)
                                            : String.valueOf(monthOfYear + 1)))
                                    + "-"
                                    + ((String.valueOf(dayOfMonth).length() == 1 ? "0"
                                            + String.valueOf(dayOfMonth)
                                            : String.valueOf(dayOfMonth)));
                            dob.setText(date_selected);

                        }

                    }, cyear, cmonth, cday);
            dateDlg.setTitle(getString(R.string.dob));
            dateDlg.setCancelable(false);
            dateDlg.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                         dob.setText("");
                         dialog.dismiss();

                        }
                    });

            return dateDlg;

        }
        return null;
    }

我已经用cancel事件处理和EditText实现了日期选择器。。可能对想清除取消活动文本的人有帮助

private EditText dob;
    static final int DATE_DIALOG_ID = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.browse);


        dob = (EditText) findViewById(R.id.txtDob);
                /* For DOB EditText */
        dob.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (v == dob)
                    showDialog(DATE_DIALOG_ID);
                return false;
            }
        });
}


    @Override
    protected Dialog onCreateDialog(int id) {
        final int cyear, cmonth, cday;

        if (dob.getText().equals("")) {
            Calendar c = Calendar.getInstance();
            cyear = c.get(Calendar.YEAR);
            cmonth = c.get(Calendar.MONTH);
            cday = c.get(Calendar.DAY_OF_MONTH);
        } else {
            String[] datestr = dob.getText().toString().split("-");
            cyear = Integer.parseInt(datestr[0]);
            cmonth = Integer.parseInt(datestr[1]);
            cday = Integer.parseInt(datestr[2]);
        }
        switch (id) {
        case DATE_DIALOG_ID:
            // return new DatePickerDialog(this, mDateSetListener, cyear,
            // cmonth,cday);
            DatePickerDialog dateDlg = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {
                        public void onDateSet(DatePicker view, int year,
                                int monthOfYear, int dayOfMonth) {
                            String date_selected = String.valueOf(year)
                                    + "-"
                                    + ((String.valueOf(monthOfYear + 1)
                                            .length() == 1 ? "0"
                                            + String.valueOf(monthOfYear + 1)
                                            : String.valueOf(monthOfYear + 1)))
                                    + "-"
                                    + ((String.valueOf(dayOfMonth).length() == 1 ? "0"
                                            + String.valueOf(dayOfMonth)
                                            : String.valueOf(dayOfMonth)));
                            dob.setText(date_selected);

                        }

                    }, cyear, cmonth, cday);
            dateDlg.setTitle(getString(R.string.dob));
            dateDlg.setCancelable(false);
            dateDlg.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                         dob.setText("");
                         dialog.dismiss();

                        }
                    });

            return dateDlg;

        }
        return null;
    }