秒表从runnable获取静态值,在runnable中编辑变量

时间:2013-03-14 15:57:24

标签: multithreading handler runnable stopwatch

我要制作秒表,但我遇到了麻烦。我的代码看起来:

1对于开始按钮:

    start.setOnClickListener(new OnClickListener() {
        @Override
    public void onClick(View v) {
               // some code
      mHandler.removeCallbacks(mUpdateTimeTask);
      mHandler.postDelayed(mUpdateTimeTask, 1);
      start.setText("Lap");
     }});

2对于runnable:

  

public Runnable mUpdateTimeTask = new Runnable(){

     public void run() {
          EditText licznik = (EditText)findViewById(R.id.editText1);
          // some code
          licznik.setText(time+"");
mHandler.postDelayed(this, 1);

      }
   };

我的秒表适用于:开始,停止。

但我无法创建内部重置按钮的onclicklistener操作:licznik.setText(""); 因为licznik是在mUpdateTimeTask中启动的,所以我也无法将licznik移到mUpdateTimeTask之外,因为它当时没有工作。

另外,当你注意到点击后我的开始按钮会变成一圈,然后一圈应该从runnable获得实际时间。我不知道怎么做,因为runnable是动态的。

有人解决一下吗?

1 个答案:

答案 0 :(得分:0)

不确定,如果这会有所帮助,但您可以通过以下方式创建Runnable

class UpdateTimeTask implements Runnable {
    private final EditText whatever;

    UpdateTimeTask(EditText whatever) {
        this.whatever = whatever;
    }

    @Override
    public void run() {
        // act upon whatever
    }
}