Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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 - Fatal编程技术网

Android 捕捉时间选择器的取消或取消

Android 捕捉时间选择器的取消或取消,android,Android,我不确定如何为下面的代码实现onCancel/onDismiss侦听器。有人能帮忙吗 private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

我不确定如何为下面的代码实现onCancel/onDismiss侦听器。有人能帮忙吗

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



@Override
   protected Dialog onCreateDialog(int id) {
        switch (id) {
        case TIME_DIALOG_ID:
            return new TimePickerDialog(this,
                    mTimeSetListener, mHour, mMinute, false);
        }
        return null;
    }
编辑:工作代码如下。当您单击“设置”时,它会执行它的操作。任何其他内容都会删除复选框

        @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case TIME_DIALOG_ID:
            TimePickerDialog myTime = new TimePickerDialog(this,mTimeSetListener, mHour, mMinute, false);
            myTime.setOnCancelListener(new OnCancelListener(){
                CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
                public void onCancel(DialogInterface dialog) {
                    Log.d("IN HERE","HERE2");
                    cbChecked = false;
                    notValue = 0;
                    checkBox.setChecked(false);
                    checkBox.setText("Use reminders");
                }
            });
            return myTime;
        }
        return null;
    }

您不应该像在
onCreateDialog
方法上那样直接返回
TimePickerDialog
,而应该实例化它并添加一个
onCancel
侦听器

...
case TIME_DIALOG_ID:
   TimePickerDialog myTime = new TimePickerDialog(this,yourListener, h, m, false);
   myTime(new DialogInterface.OnCancelListener(){
      @Override
      public void onCancel(DialogInterface arg0) {
        //your stuff
      }
   );//For cancel button

   return myTime; //Return the dialog
break;
...

谢谢你的帮助。我还是有个错误。请看一下我问题中编辑过的部分好吗。有时由于某种原因,
onCancel
事件由
onDismiss
方法处理,因此请尝试使用
setOnCancelListener
setOnDismissListener
做同样的事情(不确定这是否是实际名称)现在就放进去了。它只是没有从复选框中删除复选框,这完全是另一个问题。不过还是谢谢你。嗯,事实上。即使为选择器单击了“set”,也会调用dismise。所以cancel将是唯一有效的。