私はDatePickerウィジェットを使用するアンドロイドアプリを開発中ですが、日付を変更しようとするたびにOnDateChangeコールバックが2回呼び出されることに気付きました。 新しい日付がすべてのデバイスで一貫していれば、私はそれで暮らすことができましたが、私はちょうど、エミュレータでは最初は良い日付で呼び出されていましたが、古い日付では2回目です。Android:なぜOnDateChangeコールバックが2回呼び出されるのですか?
これは、コールバック内に印刷ログです:
12-18 20:29:12.285: E/MyOnDateChangeListener(5301): [email protected]; year=2011; monthOfYear=11; dayOfMonth=19
12-18 20:29:12.355: E/MyOnDateChangeListener(5301): [email protected]; year=2011; monthOfYear=11; dayOfMonth=18
私はここで何かが足りないのですか?
電話(Nexus S)のログには、新しい日付が2回あることにご注意ください。ここで
がリスナーです:
public class MyOnDateChangeListener implements OnDateChangedListener {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.e("MyOnDateChangeListener", view.toString() + "; year=" + year + "; monthOfYear=" + monthOfYear + "; dayOfMonth=" + dayOfMonth);
Date date = new Date();
date.setDate(dayOfMonth);
date.setMonth(monthOfYear);
date.setYear(year - 1900);
// TODO: modify the list content.
ListEventsByDate(date);
}
}
そして、ここでは、作成され/パーツを登録します。
currentDate = new Date();
currentDate.setDate(day);
currentDate.setMonth(month);
currentDate.setYear(year - 1900);
MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener();
eventDatePicker.init(year, month, day, onDateChangeListener);
try {
eventDatePicker.setMinDate(currentDate.getTime() - DAY_IN_MILIS);
} catch (Throwable e) {
Log.e("ERR", "no MinDate method available");
};
私は、私がテキストフィールドに日付を書いた場合、それがOKであることを言及するのを忘れてしまいました私が話している問題は、「+」と「 - 」ボタンを押したときだけです。
アクティビティの穴のソースコードを投稿してください。 –
これは間違いなくソースを投稿するのに役立ちます。あなたは偶然、オンデイトチェンジが発生したときにdatepickerの値を設定するコードをいくつか持っていますか? AFAIKでは、ユーザーとのやりとりのために2回コールする必要はありませんが、プログラムで日付を更新するとondatechangeが発生します。 –
ねえ、お返事ありがとう...私はここに何かが欠けていると確信しています...しかし、私はちょうど何を理解することができません... – Ciprian