android 時間和日期選擇器 監聽設置時間按鈕

網上已經很多帖子如何用,以及如何顯示 確定和取消按鈕

很多教程上屆的圖 都是有 set 和 cancel 按鈕的,但是不同的機子上默認的主題不一樣,我的自己就沒有顯示cancel的按鈕。其實可以自己把按鈕顯示出來。

android的對話框,最多可以有三個按鈕,平時中間的按鈕是隱藏的,可以自己setbutton,另外也可以監控按鈕事件來確定是否修改時間。網上都說dateset timeset 這兩個接口來監聽師是否點擊 set按鈕,其實是錯的,就算點擊了cancel按鈕,也一樣會觸發這個接口。所以,監聽這個接口不夠準確。但是可以監聽 按鈕的點擊事件,這樣就準確了。

日期監聽:

mDatePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE,

ShopApplication.mInstance.getString(R.string.date_set_ok),

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {


mDateFormat.mYear = mDatePickerDialog.getDatePicker()

.getYear();

mDateFormat.mMonth = mDatePickerDialog.getDatePicker()

.getMonth();

mDateFormat.mDay = mDatePickerDialog.getDatePicker()

.getDayOfMonth();

updateDateDisplay();


}

});

mDatePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE,

ShopApplication.mInstance.getString(R.string.date_set_cancel),

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// do nothing

while(mTimePickerDialog.isShowing()){// 這裏不能柱塞,這個接口必須執行完了,纔會消失窗口。不能放這裏。

//                        ;

//                        Toast.makeText(mContext, " dialog is showing get current time :"+ mTimeFormat.mHour+mTimeFormat.mMinute, 0).show();

//                        }


}

});

但是時間選擇的對話框,有點不一樣:

mTimePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE,

ShopApplication.mInstance.getString(R.string.date_set_cancel),

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// do nothing

}

});

沒有類似 mDatePickerDialog.getDatePicker().getYear(); 的接口來獲取對應的小時和分鐘。而且,點擊事件先於onTimeSet接口的執行。那怎麼獲取時間 又能結合按鍵事件監聽呢?

嘗試方法一:在按鍵監聽中等 dialog消失,在取時間值;同時在ontimeset接口獲取時間(可以用一個成員變量來保存)。但實際上,會堵塞,直接卡死。此方法不可行。

嘗試方法二:同方法一類似,但是在按鍵監聽中 通知handler來處理,在handler中等待。這樣就不會堵塞對話框,又能夠處理UI更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章