-1

タイムピッカーを特定の開始時刻と終了時刻にブロックすることを計画しています。そのために、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); 

メソッド呼び出しとスタックオーバーフローの例外の取得.botは(期待どおりに)何時間も更新されます。したがって、誰かがコードスニペットを見て問題を見つけた場合は、私に知らせてください。どんな助けでもありがたいです。

前もって感謝します。

4

1 に答える 1

0

これはupdateTime(curHour、curMin);の問題だと思います。またはonTimeChanged(TimePickerビュー、int hourOfDay、intminute); androidOS-v2.3.6以下のメソッド。なぜなら、Android OS-v3.1以上のデバイスで同じものをテストしたところ、正常に動作しているからです。しかし、OS-v2.3.6以下では、updateTime(curHour、curMin);を呼び出したとき。約10分で、onTimeChangedは9分だけで呼び出されます。したがって、その最小分後に最小時間に達すると、ループが続きます。

つまり、updateTime(curHour、curMin); またはonTimeChanged(TimePickerビュー、int hourOfDay、intminute); androidOS-v2.3.6以下のメソッド。

于 2012-08-30T06:39:50.223 に答える