2013-07-01 4 views
5

나는 TimePickerDialogonTimeSet() 메서드를 사용합니다. onClickListener과 함께 cancel 버튼을 추가했습니다.
내 문제는 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(); 
     } 
}); 

나는 onClickListenerpositive 버튼을 설정하지만 시간이 사용자가 선택한 얻을 수없는 경우에 시도했다. 어떤 사람이 onClickListener 시간을 얻는 방법을 알려주면 내 문제도 해결할 수 있습니다.

+1

먼저 'onClick'메서드를 입력 한 다음 'onTimeSet'을 입력합니다. 따라서 부울 변수를 사용하여'onClick' 메소드를 입력했는지 확인합니다. 그리고 나서,'onTimeSet' 메소드에서 어떤 코드도 실행하지 마십시오. – Geek

+0

실행중인 솔루션을 찾으십시오. https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti

답변

1

DatePickerDialog 및 TimePickerDialog에 문제가 있습니다 (문제 # 34833). 카운터를 사용하여이 문제를 해결할 수 있습니다. Pls. 참조 : 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에서 inbuilt 선언이므로 문제가 무엇입니까? – Harshid

관련 문제