2010-09-28 7 views
2

У меня есть вид, и я хочу добавить на него хронометр. Затем, на ничью, я хочу отобразить текущее время. Вот как я это сделал:Android Хронометр не начинается

public class MyView extends View { 
    private Chronometer chrono; 
    private long elapsedTime=0; 
    private String currentTime="00:00:00"; 

    public MyView(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
    init(context); 
    } 

    private void init(Context ctx){ 
    chrono= new Chronometer(ctx); 
    chrono.setText("Time: 00:00:00"); 
    chrono.setOnChronometerTickListener(new OnChronometerTickListener() 
    { 
      public void onChronometerTick(Chronometer arg0) { 

      String HH =((elapsedTime/3600) < 10 ? "0" : "") + (elapsedTime/3600); 
      String MM =((elapsedTime/60) < 10 ? "0" : "") + (elapsedTime/60); 
      String SS =((elapsedTime % 60) < 10 ? "0" : "") + (elapsedTime % 60); 
      String currentTime = HH+":"+MM+":"+SS; 
      elapsedTime = (SystemClock.elapsedRealtime() - arg0.getBase())/1000; 
      arg0.setText(currentTime); 
      } 
    } 
    ); 
    } 

    chrono.setBase(SystemClock.elapsedRealtime()); 
    chrono.start(); 

} 
    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawText(currentTime, someWidth , someHeight, somePaint); 
    } 

Начальный текст 00:00:00 нарисован, но он не изменяется. Я должен делать что-то неправильно. Есть идеи ?

+0

попробуйте назвать «super.onDraw (canvas)» внутри вашей переопределенной функции. – st0le

+1

btw, где находится 'chrono.start()' и 'chrono.setBase()'? внутри 'onCreate()'? – st0le

+0

chrono.start() - insde init(). Я добавил super.onDraw (холст) в нижней части onDraw, но все равно никакого эффекта. Не обновляется. – Alin

ответ

2

Вы создали локальную переменную String currentTime, и вы пишете на это вместо своей глобальной переменной.