首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用TimePickerDialog.onTimeSetListener

未调用TimePickerDialog.onTimeSetListener
EN

Stack Overflow用户
提问于 2013-03-02 03:26:28
回答 1查看 4.2K关注 0票数 7

我使用以下代码来显示一个TimePickerDialog

代码语言:javascript
复制
TimePickerDialog dialog = new TimePickerDialog(this, new OnTimeSetListener() {

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            System.out.println("onTimeSet");
        }
    }, 20, 15, true);
    dialog.setTitle("Test");
    dialog.setButton(TimePickerDialog.BUTTON_POSITIVE, "Done", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            System.out.println("Done");
        }
    });
    dialog.setButton(TimePickerDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            System.out.println("Cancel");
        }
    });
    dialog.show();

在运行Android2.3.7的设备上,onTimeSet方法不会被调用( onClick方法会)。在运行4.2.2的设备上,onTimeSet的调用方式应该是正确的。

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 01:05:54

在Android4.1.1之后,TimePickerDialog发生了变化,TimePickerDialog和DatePickerDialog的取消都有一个bug。请先阅读here。默认情况下,您不需要设置正负按钮。TimePickerDialog和DatePickerDialog会为您处理这些问题。所以如果这个取消问题对你来说并不重要,请删除正负按钮的设置。如果在两个版本中都将其删除,如果用户单击OK按钮,则将调用您onTimeSet方法。

但我建议在这个bug被修复之前,使用带有TimePicker部件的定制AlertDialog;

代码语言:javascript
复制
    final TimePicker timePicker = new TimePicker(this);
    timePicker.setIs24HourView(true);
    timePicker.setCurrentHour(20);
    timePicker.setCurrentMinute(15);

    new AlertDialog.Builder(this)
            .setTitle("Test")
            .setPositiveButton(android.R.string.ok, new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.d("Picker", timePicker.getCurrentHour() + ":"
                            + timePicker.getCurrentMinute());
                }
            })
            .setNegativeButton(android.R.string.cancel,
                    new OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            Log.d("Picker", "Cancelled!");
                        }
                    }).setView(timePicker).show();
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15165328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档