我有一些問題在我的應用程序中實現TimePicker,允許用戶在插入數據庫記錄之前更改其時間。Android TimePicker上午/下午按鈕不調用onTimeChanged
問題是,當按下AM/PM按鈕時,不會調用onTimeChanged(View,int,int)方法。但是,無論何時更改TimePicker的小時或分鐘值,都會調用onTimeChanged()。
方案:
- 用戶只要點擊該AM/PM按鈕:AM/PM是不更新
- 用戶點擊時/分:時間更新
- 用戶點擊AM/PM按鈕,然後更改小時/分鐘:時間和上午/下午更新
我錯了,認爲上午/下午按鈕應該能夠點擊更新時間,而不必在am/pm按鈕之後更改時間值?
我已經把一個小的測試項目,以複製這一這裏是代碼:
活動
public class TestActivity extends Activity implements OnTimeChangedListener {
private Calendar mCalendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timepicker);
mCalendar = Calendar.getInstance();
TimePicker tp = (TimePicker)findViewById(R.id.timepicker);
tp.setIs24HourView(false);
tp.setOnTimeChangedListener(this);
}
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Log.d("TAG", "In onTimeChanged");
mCalendar.set(mCalendar.get(Calendar.YEAR),
mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH),
hourOfDay,
minute);
setCalendarTime();
}
private void setCalendarTime() {
Date date = mCalendar.getTime();
if (date != null) {
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy '@' h:mm a");
String dateTime = formatter.format(date);
Toast.makeText(this, dateTime, Toast.LENGTH_LONG).show();
}
}
}
timepicker.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<TimePicker android:id="@+id/timepicker"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"/>
</LinearLayout>
感謝這個信息,山姆! – hooked82 2012-02-06 15:56:57
自2011年以來報告錯誤...不錯 – 2015-05-13 13:04:29
感謝您的信息vivik – Jinu 2016-04-04 08:09:52