-2

您好,我正在尝试使用线程来使射击系统工作以正常工作,有一个用于空间攻击的按钮,他可以每 20 秒使用一次,我尝试按照代码执行此操作:

        ballatack.setImageResource(R.drawable.buttonof);
        Thread timer2 = new Thread(){
            public void run(){
            try{
                sleep(5000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                ballatack.setImageResource(R.drawable.buttonof);

            }
            }
        };
        timer2.start();

但它不起作用,eclipse说没有什么像verythings是正确的但是当我运行模拟器时它不起作用

4

3 回答 3

2

您不能与非 UI 线程中的 UI 元素进行交互。使用 Handler 及其 postDelayed 方法在 UI 线程上设置图像

于 2013-04-16T13:33:26.013 回答
2

试试这个代码:

ballatack.postDelayed(new Runnable(){
   @Override
   public void run(){
        ballatack.setImageResource(R.drawable.buttonof);
   }
}, 5000);

这样您就不会创建阻塞线程,而只会与 UI 线程上的 UI 元素进行交互。

于 2013-04-16T13:34:56.277 回答
2

您不能触摸主线程以外的 UI 元素。尝试改用处理程序

private Handler mHandler = new Handler();

ballatack.setImageResource(R.drawable.buttonof);

mHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
        ballatack.setImageResource(R.drawable.buttonof);
    }
}, 5000);
于 2013-04-16T13:36:24.730 回答