下面是我的代码:
public class SomeName extends MapActivity implements OnClickListener, OnTouchListener{
public Timer t1 = new Timer();
public TimerTask tt;
public long interval = 5000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.map);
timer();
}
public final void timer()
{
t1 = new Timer();
tt = new TimerTask() {
@Override
public void run() {
systemClick();
}
};
t1.scheduleAtFixedRate(tt, 10000, interval);
}
public void systemClick()
{
Toast.makeText(getApplicationContext(),"System Button Clicked", 5).show();
}实际上,我想调用一些函数来刷新我的位置。
但我不明白为什么我从来不把吐司放在屏幕上。我是android的新手。
谢谢你的帮助。
发布于 2012-06-05 04:07:08
在您的活动中使用处理程序
final Handler handlerforadd = new Handler();
Runnable runnableforadd = new Runnable() {
@Override
public void run() {
handlerforadd.postDelayed(this, 1000);
}
};
handlerforadd.postDelayed(runnableforadd, 0);发布于 2012-06-05 04:33:43
原因是Toast必须在UI线程上完成。在您当前的代码中,run()方法是在单独的线程上执行的。我建议看看这个关于进程和线程的article。@parag是正确的,使用Handler是获取对UI线程的引用的一种方法,但还有其他方法。
https://stackoverflow.com/questions/10887396
复制相似问题