0

アプリケーションでタイマーを作成しましたが、開始して停止し、一時停止と再開を同時に行うことができません。次のコードを使用して、アプリケーションの時間を実装しました。

 String Current_click_btn ;

一時停止ボタンをクリックすると、ミリ秒単位で保存された以前の現在の時間が保存され、再開すると、以前に保存された値が 100 の値で増加するため、スレッドが再び開始されると、保存された現在の時間が 100 で増加します。

@Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
       if(v ==Start)
            {
                Current_clickbtn="Start";
                startTime = System.currentTimeMillis();
                mHandler.removeCallbacks(startTimer);
                mHandler.postDelayed(startTimer, 0);
            } 

            if(v == Pause)
            {
                Current_clickbtn="Pause";
                if(Pause.getText().equals("Pause"))
                {
                    Pause.setText("test");
                    mHandler.removeCallbacks(startTimer);
                }
                else
                {   
                    mHandler.postDelayed(startTimer, 0);
                    Pause.setText(getString(R.string.pause));
                }
            }


            }
   private Runnable startTimer = new Runnable() 
{
       public void run() {

          if(Current_clickbtn.equals("Start"))
          {
             CurrentTime = System.currentTimeMillis();
             elapsedTime = CurrentTime - startTime;
          }
          else
          {   
               elapsedTime = CurrentTime - startTime;
              CurrentTime+=100;
          }
             updateTimer(elapsedTime,ctx);

               mHandler.postDelayed(this,REFRESH_RATE);

       }
};

            public void updateTimer (float time,Context ctx){
                    secs = (long)(time/1000);
                    mins = (long)((time/1000)/60);
                    hrs = (long)(((time/1000)/60)/60);

                    /* Convert the seconds to String 
                     * and format to ensure it has
                     * a leading zero when required
                     */
                    secs = secs % 60;
                    seconds=String.valueOf(secs);
                    if(secs == 0){
                        seconds = "00";
                    }
                    if(secs <10 && secs > 0){
                        seconds = "0"+seconds;
                    }

                    /* Convert the minutes to String and format the String */

                    mins = mins % 60;
                    minutes=String.valueOf(mins);
                    if(mins == 0){
                        minutes = "00";
                    }
                    if(mins <10 && mins > 0){
                        minutes = "0"+minutes;
                    }

                    /* Convert the hours to String and format the String */

                    hours=String.valueOf(hrs);
                    if(hrs == 0){
                        hours = "00";
                    }
                    if(hrs <10 && hrs > 0){
                        hours = "0"+hours;
                    }

                    /* Although we are not using milliseconds on the timer in this example
                     * I included the code in the event that you wanted to include it on your own
                     */


                    System.out.println("***"+hours + ":" + minutes + ":" + seconds);
                    Timetextview=(TextView)((Activity) ctx).findViewById(com.carenet.activity.R.id.textView_time);
                    Timetextview.setText(hours + ":" + minutes + ":" + seconds);

                }

助けて。

4

1 に答える 1

0

コードは次のようになります。

                     CurrentTime = System.currentTimeMillis();
                     elapsedTime = CurrentTime - startTime;

つまり、一時停止するかどうか、それ以降の時間が表示されますstartTime

于 2013-02-07T09:18:57.603 に答える