我正在学习android,我遇到了一个小问题。 我点击它后,我想要移动到屏幕右侧的按钮。 我添加了一个计时器,在点击按钮后启动,但是当我点击按钮时程序/活动崩溃。
这是代码:
import android.app.Activity;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.Button;
public class Testing extends Activity{
Timer timer = new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testing_layout);
final Button bt = (Button)findViewById(R.id.testButton);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timer.scheduleAtFixedRate(new TimerTask(){
@Override
public void run() {
float btLoc = bt.getX();
bt.setX(btLoc+= 50);
}
}, 2000, 2000);
}
});
}
这段代码在没有计时器的情况下移动按钮。我不知道为什么程序在onClick(View v)
执行时崩溃。
(对不起我的英文)
答案 0 :(得分:1)
使用runOnUiThread从非UI线程更新UI:
@Override
public void onClick(View v) {
timer.scheduleAtFixedRate(new TimerTask(){
@Override
public void run() {
Testing.this.runOnUiThread(new Runnable() {
public void run() {
//update ui here
float btLoc = bt.getX();
bt.setX(btLoc+= 50);
}
});
}
}, 2000, 2000);
}
});