проблема с StopWatch в Android - PullRequest
0 голосов
/ 09 мая 2011

в моем приложении я поместил секундомер с двумя кнопками.Секундомер работает должным образом.Но проблема в том, что при запуске таймер выглядит как 0: 0: 0, когда он начинает считать, отдельные цифры были заменены на двузначные 0: 12: 53.

это влияет и мешает другим слоямтоже.В самом начале я хочу, чтобы он отображался как 00:00:00 по умолчанию, чтобы я не мог вносить изменения в макет.

, но я не знаю, где дать значение для этого.Ниже приведен мой код

  b1.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View view) 
            {
                if(b1.getText().toString().equals("Start"))
                {
                        if(currentThread.getState()==Thread.State.NEW)
                        {
                            currentThread.start();
                            shouldRun = true;
                            b1.setText("Stop");
                        }
                        else
                        {
                          shouldRun = false;
                          b1.setText("Stop");
                        }
                }
                else if(b1.getText().toString().equals("Stop"))
                {
                    time=0;
                    time1=0;
                    time2=0;
                }
            }
        });     
        b2.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View view) 
            {
                if(b2.getText().toString().equals("Pause"))
                {
                    shouldRun = false;
                    b2.setText("Resume");
                }
                else if(b2.getText().toString().equals("Resume"))
                {
                    shouldRun = true;
                    b2.setText("Pause");
                }
            }
        });               
    }
    @Override
    public void run()
    {
        try 
        {
         while(true)
         {  
            while(shouldRun)
            {
                Thread.sleep(1000);
                Log.e("run", "run");
                threadHandler.sendEmptyMessage(0);
            }
         }   
        } 
        catch (InterruptedException e) {}
    }


    private Handler threadHandler = new Handler() 
    {
        public void handleMessage(android.os.Message msg) 
        {
            sec=time2++;
            if(sec == 59)
            {
                time2=0;
                sec = time2++;
                min=time1++;
            }
            if(min == 59)
            {
                time1=0;
                min = time1++;
                hr=time3++;
            }             
            stopWatch.setText(""+hr+":"+min+":"+sec);
        }
    };

}

как это сделать, пожалуйста, помогите мне ............

Ответы [ 4 ]

4 голосов
/ 09 мая 2011

Это должно сделать работу:

String time = String.format("%02d:%02d:%02d", hr, min, sec);
stopWatch.setText(time);

Или однострочная версия:

stopWatch.setText(String.format("%02d:%02d:%02d", hr, min, sec));
1 голос
/ 09 мая 2011

установить текст так

stopWatch.setText(""+(hr<10?"0"+hr:hr)+":"+(min<10?"0"+min:min)+":"+(sec<10?"0"+sec:sec));
0 голосов
/ 09 мая 2011

Просто добавьте этот код

 private Handler threadHandler = new Handler() 
{
    public void handleMessage(android.os.Message msg) 
    {
        sec=time2++;
        if(sec == 59)
        {
            time2=0;
            sec = time2++;
            min=time1++;
            if(sec< 10)
              sec= "0"+sec

        }
        if(min == 59)
        {
            time1=0;
            min = time1++;
            hr=time3++;
           if(min< 10)
               min= "0"+min
        }   

        if(hr< 10)
           hr= "0"+hr          
        stopWatch.setText(""+hr+":"+min+":"+sec);
    }
};
0 голосов
/ 09 мая 2011

будет:

stopWatch.setText("00:00:00");

не делать трюк, когда вы его инициализируете?

...