我有一个屏幕,用户在屏幕上从TimePickerDialog
实例中选择一个时间。但在回电话中我无法获得所选日期。我的代码是这样的:
public void onSomeButtonClick(object sender, EventArgs e)
{
t = new TimePickerDialog(this, (EventHandler<TimePickerDialog.TimeSetEventArgs>)null, hour, min, false);
t.SetButton("OK", data_TimePickerCallback);
t.Show()
}
private void data_TimePickerCallback(object sender, EventArgs e)
{
int hour = ((TimePickerDialog)sender)... // How to get the Time selected here??
}
为什么我没有在构造函数中传递CallBack?由于this错误(基本上:在某些版本的android中,系统只在对话框中放入“Ok”按钮因此,如果您单击“确定”或单击“时间戳”对话框外部,则两者都会触发回调,就好像它正在确认一样),并且如此处所述,解决方法是通过在选取器中添加自定义按钮来添加行为,如上面的代码。
我以前的做法在大多数设备上运行良好,但并非全部因为这个错误,并且代码大致是这样的:
public void onSomeButtonClick(object sender, EventArgs e)
{
new TimePickerDialog(this, data_TimePickerCallback, hour, min, false).Show();
}
private void data_TimePickerCallback(object sender, TimePickerDialog.TimeSetEventArgs e)
{
int hour = e.HourOfDay;
int minute = e.Minute;
}
在很容易获得时间之前,但现在有了这个改变,我没有在sender
对象中找到一种方法来获得时间(int vars分钟和小时)。
修改:我还尝试在我的Activity类上实现TimePickerDialog.IOnTimeSetListener
,并将OnTimeSet(TimePicker view, int hourOfDay, int minute)
添加到其中作为下面的代码,但仍然导致了同样的错误:
public class CadCliente : Activity, TimePickerDialog.IOnTimeSetListener{
public void OnTimeSet(TimePicker view, int hourOfDay, int minute)
{
// handles
}
//...
public void onSomeButtonClick(object sender, EventArgs e)
{
new TimePickerDialog(this, this, hour, minute, false).Show();
}
}