我想实现一个选择时间并返回它的方法,比如
public static int pickTime(Context context, int minuteOfDay) {
final int[] result = {-1};
final OnTimeSetListener listener = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
result[0] = 60*hourOfDay + minute;
}
};
new MyTimePickerDialog(context, listener, minuteOfDay/60, minuteOfDay%60, false).show();
return result[0];
}
只发现对话框立即返回,因此我的方法总是返回-1。
这是我可以忍受的东西,然而,我很好奇这样的事情是否可行。我不关心应用程序在等待输入时是否有效,因为TimePicker
几乎占据了整个屏幕。
请注意,标准解决方案对我有用,但我认为这是一个很好的练习,可以更好地理解系统。
答案 0 :(得分:0)
可以从另一个线程轻松实现,只需等待对话框关闭即可。从主线程等待不起作用,因为它阻止事件处理。所以不要等待,我必须自己运行事件循环,这可能很复杂甚至不可能。
可以做的是传递应该设置的TextView
。但是,我总是需要做更多,所以它没用。我最终得到了一个类,可以按如下方式使用(调用构造函数完成整个工作):
new MyTimePickerCallback(context, oldMinutes) {
@Override
public void onResult(int newMinutes) {
... do whatever you want
}
};