在我的应用程序中,我放置了一个带两个按钮的秒表。秒表以适当的方式工作。但问题是在启动时计时器看起来是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);
}
};
}
如何做到这一点请帮助我............
答案 0 :(得分:4)
这应该做的工作:
String time = String.format("%02d:%02d:%02d", hr, min, sec);
stopWatch.setText(time);
或单行版本:
stopWatch.setText(String.format("%02d:%02d:%02d", hr, min, sec));
答案 1 :(得分:1)
设置文本如此
stopWatch.setText(""+(hr<10?"0"+hr:hr)+":"+(min<10?"0"+min:min)+":"+(sec<10?"0"+sec:sec));
答案 2 :(得分:0)
意愿:
stopWatch.setText("00:00:00");
初始化时没有做到这一点?
答案 3 :(得分:0)
您只需添加此代码即可。
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);
}
};