OnTimeSet还呼吁解雇TimePickerDialog时 [英] OnTimeSet called also when dismissing TimePickerDialog

查看:96
本文介绍了OnTimeSet还呼吁解雇TimePickerDialog时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

今天,我试图使用 TimePickerDialog ,但我发现了几个漏洞。

Today I was trying to use the TimePickerDialog but I noticed a couple of flaws.

  1. OnTimeSet被调用时也被驳回的对话框(通过点击之外,例如)
  2. OnTimeSet调用两次当用户点击完成按钮

我正在使用的API为18。

The API I'm using is 18.

任何人都经历了这些问题呢?你是如何解决这些问题?

Anyone else has experienced these problems? How did you solve them?

推荐答案

今天面对完全一样的问题。难道不明白,为什么这是怎么回事,却发现了一个简单的解决方案:

Faced the exact same issue today. Could not figure out why this was happening, but found a simple solution:

方法onTimeSet()被调用一次时被关闭对话框,被称为点击完成按钮时的两倍。无论哪种方式,还有就是onTimeSet 1骚扰呼叫()。所以,我决定总是忽略第一个电话。

Method onTimeSet() is called once when dialog is dismissed and is called twice when Done button is clicked. Either way, there is one unwanted call to onTimeSet(). So I decided to always ignore the first call.

这里的code:

Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);

TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() 
    {
        int callCount = 0;   //To track number of calls to onTimeSet()

        @Override
        public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) 
        {
             if(callCount == 1)    // On second call
             {
                 timeString = selectedHour + ":" + selectedMinute + ":00";
                 Log.d("TEST", "Chosen time : "+ timeString);           
             }

             callCount++;    // Incrementing call count.

        }
    }, hour, minute, true);

    mTimePicker.setTitle("Pick Time");
    mTimePicker.show();

这篇关于OnTimeSet还呼吁解雇TimePickerDialog时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆