안드로이드 4.1(언승욱 빈스) 이후 Time Picker Dialog의 움직임은 이해할 수 없다
TimePickerDialog 소개
그렇습니다. 시간을 설정하는 대화상자입니다.
그림은 ICS(Android 4.0.4)
ICS에는 취소 및 설정 버튼이 구성되어 있습니다.
물론 취소 버튼을 누르면 입력이 없고, 설정을 누르면 입력이 완성된다.
언승욱 빈스 이후에 (4.4.2 Kitkat 확인까지)라면?
이렇게 되다
취소 버튼이 없어졌습니다. 설정 버튼이'완성'이 되었습니다.
신기한 건 여기서부터 시작이야.
이렇게 되다
취소 버튼이 없어졌습니다. 설정 버튼이'완성'이 되었습니다.
신기한 건 여기서부터 시작이야.
왜?
일부러 그런 건지 모르겠다.
빈대야?이것 괜찮아요?
코드는요?
4.0.4사이즈로 이렇습니다.
TimePickerDialog.javapublic void onClick(DialogInterface dialog, int which) {
if (mCallback != null) {
mTimePicker.clearFocus();
mCallback.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
}
}
버튼을 누르면 답장의onTimeset을 호출합니다.
다만, 구조기에서 버튼 설정을 하고 버튼 설정을 완성하면 호출이 이뤄지고, 취소 버튼은 원래 OnClickListener를 설정하지 않았기 때문에 onClick이라고 부르지 않는다.
따라서 완료 단추를 눌렀을 때만 onTimeset을 호출하고 완료를 입력할 수 있습니다.
그럼 언승욱 빈스 다음은?
4.1.1 코드는 이렇습니다.
TimePickerDialog.javapublic void onClick(DialogInterface dialog, int which) {
tryNotifyTimeSet();
}
public void updateTime(int hourOfDay, int minutOfHour) {
mTimePicker.setCurrentHour(hourOfDay);
mTimePicker.setCurrentMinute(minutOfHour);
}
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
/* do nothing */
}
private void tryNotifyTimeSet() {
if (mCallback != null) {
mTimePicker.clearFocus();
mCallback.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
}
}
@Override
protected void onStop() {
tryNotifyTimeSet();
super.onStop();
}
언승욱 빈스 이후의 코드는tryNotifyTimeset()이라는 방법을 추가해 리셋을 호출하는onTimeset을 볼 수 있다.
다만, 이 방법은 onClick과 onStop에서 호출됩니다.
따라서 TimePickerDialog를 닫으면 onStop에서tryNotifyTimeSet을 호출하여 입력을 완성합니다.
완료 단추를 누르면 onClick에서tryNotifyTimeset을 호출하면 대화상자가 닫힐 때의onStop도tryNotifyTimeset이라고 부릅니다.
물론 휴면 단말기만 온타임셋이라고 부른다.
입력을 취소할 수 없습니다.
왜 이렇게 됐지
어떻게 대처해야 할지...
Reference
이 문제에 관하여(안드로이드 4.1(언승욱 빈스) 이후 Time Picker Dialog의 움직임은 이해할 수 없다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsukay/items/a28a572775bc3648e78b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
4.0.4사이즈로 이렇습니다.
TimePickerDialog.java
public void onClick(DialogInterface dialog, int which) {
if (mCallback != null) {
mTimePicker.clearFocus();
mCallback.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
}
}
버튼을 누르면 답장의onTimeset을 호출합니다.다만, 구조기에서 버튼 설정을 하고 버튼 설정을 완성하면 호출이 이뤄지고, 취소 버튼은 원래 OnClickListener를 설정하지 않았기 때문에 onClick이라고 부르지 않는다.
따라서 완료 단추를 눌렀을 때만 onTimeset을 호출하고 완료를 입력할 수 있습니다.
그럼 언승욱 빈스 다음은?
4.1.1 코드는 이렇습니다.
TimePickerDialog.java
public void onClick(DialogInterface dialog, int which) {
tryNotifyTimeSet();
}
public void updateTime(int hourOfDay, int minutOfHour) {
mTimePicker.setCurrentHour(hourOfDay);
mTimePicker.setCurrentMinute(minutOfHour);
}
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
/* do nothing */
}
private void tryNotifyTimeSet() {
if (mCallback != null) {
mTimePicker.clearFocus();
mCallback.onTimeSet(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
}
}
@Override
protected void onStop() {
tryNotifyTimeSet();
super.onStop();
}
언승욱 빈스 이후의 코드는tryNotifyTimeset()이라는 방법을 추가해 리셋을 호출하는onTimeset을 볼 수 있다.다만, 이 방법은 onClick과 onStop에서 호출됩니다.
따라서 TimePickerDialog를 닫으면 onStop에서tryNotifyTimeSet을 호출하여 입력을 완성합니다.
완료 단추를 누르면 onClick에서tryNotifyTimeset을 호출하면 대화상자가 닫힐 때의onStop도tryNotifyTimeset이라고 부릅니다.
물론 휴면 단말기만 온타임셋이라고 부른다.
입력을 취소할 수 없습니다.
왜 이렇게 됐지
어떻게 대처해야 할지...
Reference
이 문제에 관하여(안드로이드 4.1(언승욱 빈스) 이후 Time Picker Dialog의 움직임은 이해할 수 없다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsukay/items/a28a572775bc3648e78b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(안드로이드 4.1(언승욱 빈스) 이후 Time Picker Dialog의 움직임은 이해할 수 없다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tetsukay/items/a28a572775bc3648e78b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)