今天使用TimePickerDialog時發現個怪異現象,就是它居然TimeSet會執行兩次!?
讓我不解阿,不管怎麼找都沒找到第二次觸發的事件
後來Google一下才發現TimePickerDialog在進入onStop()時,即Dialog消失前又會再TimeSet一次
解決這問題目前我想到2種方法:
第一種是Implements TimePickerDialog.OnTimeSetListener時,在onTimeSet方法裡判斷這是第幾次執行TimeSet,但這方法有個問題在於,若點擊Dialog以外的地方Dialog一樣會消失,這時也會執行TimeSet,畢竟使用者點擊Dialog以外的地方不代表他想要設定時間阿
第二種方法能解決第一種方法存在的問題,建立一個class繼承TimePickerDialog,並覆寫onStop()方法,覆寫只要將super.onStop()註解掉就好
這樣就能解決TimeSet兩次及點擊Dialog外的地方Dialog消失時執行TimeSet的問題
另外,這個問題我在測試時出現在Android 4.4.2版本,而Android 5.0似乎沒有這問題(我忘記測試了,ㄏㄏ)
總之開發時要注意一下這個問題