5

我使用TimePickerDialogwithonTimeSet()方法。我添加了一个cancel带有 的按钮onClickListener
我的问题是,当我单击cancel按钮时,会调用 onTimeSet() 方法。为什么?有什么办法可以解决这个问题?

// Create timePicker and set listener
timeListener = new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {


        };

    timePicker = new TimePickerDialog(RS_CreateTripActivity.this,
                timeListener, hour, min, false);
    timePicker.setCanceledOnTouchOutside(false);
    timePicker.setCancelable(false);

    // Set negative button click listener
    timePicker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
                new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
                        datePicker.dismiss();
        }
});

我尝试通过设置positive按钮,onClickListener但在这种情况下,我无法获得用户选择的时间。如果有人告诉我如何在 内获得时间onClickListener,那么它也可以解决我的问题。

4

2 回答 2

2

你必须使用这种方式。

private TimePickerDialog.OnTimeSetListener mTimeSetListener =
            new TimePickerDialog.OnTimeSetListener() {
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    mHour = hourOfDay;
                    mMinute = minute;
                    time = ""+mHour+":"+mMinute;

           }
    };



@Override
   protected Dialog onCreateDialog(int id) {
        switch (id) {
        case TIME_DIALOG_ID:
            TimePickerDialog myTime = new TimePickerDialog(this,mTimeSetListener, h, m, false);
            myTime(new DialogInterface.OnCancelListener(){
            @Override
            public void onCancel(DialogInterface arg0) {
                //your cancel task.
            }
            );//For cancel button

        return myTime; //Return the dialog
        break;
        return null;
    }

它就像魅力一样工作。

于 2013-07-01T06:31:11.900 回答
1

DatePickerDialog 和 TimePickerDialog 存在问题(问题 #34833)。您可以使用计数器作为解决此问题的方法。请。参考:Android中带有取消选项的日期选择器

于 2013-07-01T07:34:16.550 回答