2013-07-01 34 views
5

我使用TimePickerDialogonTimeSet()方法。我添加了一個cancel按鈕和onClickListener
我的問題是,當我點擊cancel按鈕時,onTimeSet()方法被調用。爲什麼?任何方式來解決這個問題?TimePickerDialog:單擊「取消」按鈕調用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(); 
     } 
}); 

我試圖通過設置positiveonClickListener按鈕,但我不能讓時間由用戶選擇的情況下。如果有人告訴我如何在onClickListener之內獲得時間,那麼它也能解決我的問題。

+1

它首先進入'onClick'方法,然後'onTimeSet'。因此,使用一個布爾變量來檢查它是否進入了'onClick'方法。它確實做了,然後不要在'onTimeSet'方法中執行任何代碼。 – Geek

+0

請在這裏找到運行的解決方案:https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti

回答

1

DatePickerDialog和TimePickerDialog存在問題(問題#34833)。你可以使用一個計數器來解決這個問題。 請致電參考:Date Picker with cancel option in android

+0

計數器不能解決問題。 – Geek

+0

您是否看到34833中提到的問題? – lokoko

+0

請在這裏找到運行解決方案:https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti

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; 
    } 

它像魅力的工作。

+0

我不延長'DialogFragment'。那麼'onCreateDialog'方法會工作嗎? TIME_DIALOG_ID是你的變量還是在SDK中聲明的? – Geek

+0

它是由你聲明還是已經在SDK中聲明? – Geek

+0

它是在sdk內置聲明,所以什麼是問題? – Harshid