是否可以编写方法选择时间?

时间:2012-09-17 06:10:45

标签: android user-interface modal-dialog

我想实现一个选择时间并返回它的方法,比如

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几乎占据了整个屏幕。

请注意,标准解决方案对我有用,但我认为这是一个很好的练习,可以更好地理解系统。

1 个答案:

答案 0 :(得分:0)

可以从另一个线程轻松实现,只需等待对话框关闭即可。从主线程等待不起作用,因为它阻止事件处理。所以不要等待,我必须自己运行事件循环,这可能很复杂甚至不可能。

可以做的是传递应该设置的TextView。但是,我总是需要做更多,所以它没用。我最终得到了一个类,可以按如下方式使用(调用构造函数完成整个工作):

new MyTimePickerCallback(context, oldMinutes) {
    @Override
    public void onResult(int newMinutes) {
        ... do whatever you want
    }
};