2012-12-30 1 views
6

은 내가 아는 한, 이전에 젤리 콩에 버전, TimePickerDialog를 사용하는 경우 설정 버튼을 취소했다. 젤리는 만을 가지고 있습니다 버튼을 누릅니다.Android JellyBean TimePickerDialog에서 취소 기능을 사용할 수 있습니까?

은 그냥 버튼을 완료하고 대화 외부를 클릭하여 대화 상자를 닫습니다 수 있지만 을 완료하거나 대화 외부 눌러 경우 내 onTimeSetListener가 호출됩니다 떠날 수 있습니다.

this stackoverflow questionDatePickerDialog을 사용할 때 버그가 있다는 것을 발견했습니다. DatePickerDialog을 사용하여 문제를 해결하려면 onDateSetListenernull으로 설정하고 BUTTON_POSITIVE (설정) 및 BUTTON_NEGATIVE (취소) onClick 메서드를 처리하기위한 버튼을 구현해야합니다. 버튼 라고을 설정했을 때이 같은 DatePicker에서 값에 액세스 할 수 있기 때문에 어느 괜찮이

int yearPicked = dateDlg.getDatePicker().getYear(); 
int monthPicked = dateDlg.getDatePicker().getMonth(); 
int dayPicked = dateDlg.getDatePicker().getDayOfMonth(); 

그래서 onDateSetListener를 사용할 필요가 없습니다,하지만 난 것인지 누를 때, 그것은 다시 호출 될 것이다 설정 또는 취소.

나는 TimePickerDialog 같은 방법을 사용하려고하지만, 문제는 TimePickerDialog를 제공하지 않기 때문에 BUTTON_POSITIVE의 onclick 방법 안에, 내가 DatePickerDialog로, 이전과 TimePicker을 시간과 분 값을 액세스 할 수있다DatePicker을 제공합니다. 다시 onTimeSetListener을 사용하면 아무 것도 누르지 않아도 호출됩니다.

Calendar cal = Calendar.getInstance(); 

int hour = cal.get(Calendar.HOUR_OF_DAY); 
int min = cal.get(Calendar.MINUTE); 

final TimePickerDialog timeDlg = new TimePickerDialog(PreferencesActivity.this, null, hour, min, true); 

// Make the Set button 
timeDlg.setButton(DialogInterface.BUTTON_POSITIVE, "Set", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     if (which == DialogInterface.BUTTON_POSITIVE) { 
      // CANNOT ACCES THE VALUES 
      Toast.makeText(PreferencesActivity.this, "Set", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 


// Set the Cancel button 
timeDlg.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     if (which == DialogInterface.BUTTON_NEGATIVE) { 
      Toast.makeText(PreferencesActivity.this, "Cancel", Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

timeDlg.show(); 
+0

음, 'TimePickerDialog.OnTimeSetListener'를 등록하여 입력 된 값을 캡처 할 수는 있지만, 음수 버튼을 두드리면 아무 것도하지 않겠습니까? –

+0

그게 문제인데, OnTimeSetListener는 양수, 음수, 뒤로 버튼을 누르면 호출됩니다. – Marko

+1

동일한 문제가 있습니다. 아래에서 허용되는 대답은 이전 버전과 호환되지 않습니다 (사전 jb). Sice 나는 sdk 8+가 필요했고, 확장 된 조각 대화 상자에서 부울 값으로 해결하고 onClick()을 재정의했습니다. – auval

답변