2013年2月10日日曜日

Android備忘録:DatePickerの罠


Androidアプリで日付指定できるアイテムとして、
DatePickerやDatePickerDialogがあります。
これらをカスタマイズした時にハマったことを書いておきます。

アプリは主に公開用ではなく自分用に作っているのですが、
使用者(妻)から次のような要望が来ました。

「日付を指定するときに、"+5日"や"-5日"ボタンが欲しい」

ふむ。設計としては、DatePickerを1つとボタン2つを配置して、
+5ボタンが押されたらDatePickerの日付を+5、
-5ボタンが押されたらDatePickerの日付を‐5だなと。
簡単だ。

コーディング。できた。うん、動作してる。

しかし、これだけでは次の操作時に意図した動きとなりませんでした。
 0.DatePickerの表示は、年/月/日の順に2013/02/06とする(例)
 1.「月」部分のEditTextをタップして、月を「05」と手入力する
 2.「+5ボタン」をタップする
 3.DatePickerの表示は、2013/02/11となる

おや、2013/05/11とはなりません。困りました。

■解決方法
色々とデバッグを重ねて分かった事なのですが、
DatePickerは、EditText部分をタップして数値を直接入力した場合、
「フォーカスがEditTextから外れた時に初めて」設定が反映されるようです。

このため、「+5ボタン」などが押されたときに、
DatePickerからフォーカスを外す処理を加えればOKです。

1
2
3
// DatePickerからフォーカスを外す
DatePicker dp = ****;
dp.clearFocus();

3日ほどハマりました。

0 件のコメント:

コメントを投稿