TimePickerDialog:单击“取消”按钮调用onTimeSet()方法

时间:2013-07-01 06:18:16

标签: android android-timepicker

我使用TimePickerDialog方法onTimeSet()。我在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内获得时间,那么它也可以解决我的问题。

2 个答案:

答案 0 :(得分: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;
    }

这就像魅力一样。

答案 1 :(得分:1)

DatePickerDialog和TimePickerDialog存在问题(问题#34833)。您可以使用计数器作为解决此问题的解决方法。 PLS。请参阅:Date Picker with cancel option in android