阻止Android Native TimePicker阻塞一天中的几个小时的问题

时间:2012-08-29 15:15:43

标签: android timepicker

我打算将时间选择器阻止到特定的开始时间和结束时间。为此我设置TimeChangedListener并覆盖onTimeChanged方法。下面是onTimeChanged()的实现。

@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
//;super.onTimeChanged(view, hourOfDay, minute);
 try{
   boolean flag = true;

   if (hourOfDay <= maxHour && hourOfDay >= minHour) {
     if (hourOfDay == maxHour && hourOfDay == minHour) {
       if (minute > maxMin)
          flag = false;
       else if (minute < minMin)
        flag = false;
       else if (minute == maxMin && minute == minMin) {
        flag = false;
       } else if (minute == maxMin) {
          flag = false;
       } else if (minute == minMin) {
          flag = false;
       }
    } else if (hourOfDay == maxHour) {
       if (minute > maxMin)
       {
        flag = false;
       }
    } else if (hourOfDay == minHour) {
       if (minute < minMin)
         flag = false;
    }

   if (flag) {
      curHour = hourOfDay;
      curMin = minute;    
   } else {
      updateTime(curHour, curMin);

   }
 //(curYear, curMonth);
 } else {
    updateTime(curHour, curMin);
 }
//view.updateDate(curYear, curMonth, curDay);
 } catch (Exception e) {
     Log.e("CustomTimePicker","error");
   }
}

但是当我达到最短时间并尝试再次减少分钟时间时,使用此代码段,它将从第一个开始继续循环

   updateTime(curHour, curMin); 

方法调用和获取堆栈溢出exception.bot工作正常(如预期)几小时更新。 因此,如果有人看一下代码片段并找出问题,请告诉我。 任何帮助将不胜感激。

先谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这是updateTime的问题(curHour,curMin);或onTimeChanged(TimePicker视图,int hourOfDay,int分钟); android OS-v2.3.6及以下的方法。因为当我在具有android OS-v3.1及以上版本的设备上测试相同时它的工作正常。但在OS-v2.3.6及以下版本中我调用updateTime(curHour,curMin);在大约10分钟的时间里,onTimeChanged仅在9分钟内被调用。因此,当我达到最小分钟后的最小时间后,它将继续循环。

所以它是一个但是有updateTime(curHour,curMin);或onTimeChanged(TimePicker视图,int hourOfDay,int分钟); android OS-v2.3.6及以下的方法。