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更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值