Android は日付の表示をサポートしていないため、レイアウトに TextView を追加しました。
DatePicker に onDateChangedListener を配置しました。日付が変わると、曜日を決定し、ハンドラーを介して設定して、UI スレッドで確実に行われるようにします。
// this is being called when the date changes on the DatePicker
public void onDateChanged(DatePicker view, final int year,
final int monthOfYear, final int dayOfMonth) {
String dayOfTheWeek = null;
// some code here to set the 'dayOfTheWeek' string
h.sendMessage(h.obtainMessage(0, dayOfTheWeek));
}
final Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
dayOfWeekTextView.setText((String)msg.obj);
}
};
私の問題: ウィジェット ( Android 4.0 U I) で日をスクロールすると、スムーズではありません! 問題の内容を確認しましたが、それは String がどうあるべきかを判断する方法ではなく、実際setText()
には Handler にあります。その部分にコメントすると、すべて問題ありません。また、そこにハードコードされたテキストを設定すると ( dayOfWeekTextView.setText("SOMETHING');
)、同じ問題が発生します。をジッターしDatePicker
ます。
そんなにsetText()
大した行動なの?Wunderlist には曜日が表示されており、スムーズに実行されますが、どのように実行されているのかわかりません。
でのみテストしましたHTC One X
。誰でもアイデアはありますか?
編集:
Wunderlistで滑らかな理由がわかりました!私はそれらと同じDialogFragmentを使用しています。ダイアログにタイトルを設定できます。これは Wunderlist が TextView の代わりに使用するものです。だから私はそれを使うつもりです(そして見た目も良くなります;))
したがって、「getDialog().setTitle(dayOfWeek)」を実行しても問題ありません。まだ問題が残っています: UI スレッドで setText が遅いのはなぜですか?