2016-11-28 39 views
-1

我在xml中有一个按钮。按下按钮时,我希望快速更改该按钮上的背景和文字。显示按键文本和背景的随机数

我通常会使用这样的代码,最终的结果:

String rndm[] = {"A","B","C","D"}; 
{rnd = rndm[(int) (Math.random() * rndm.length)];} 

{Button btn = (Button) findViewById(R.id.button1); 
btn.setText(String.valueOf(rnd)); 
btn.setTextColor(Color.parseColor("#000000"));} 

在此之前,被称为虽然我想也许是一个“洗牌”效应两秒钟。

我一直在使用java.util.Timer中这样的尝试:

@Override 
      public void onClick(View v) {       

        new java.util.Timer().schedule(
         new java.util.TimerTask() { 
          @Override 
          public void run() { 

String rndm[] = {"A","B","C","D"}; 
    {rnd = rndm[(int) (Math.random() * rndm.length)];} 

{Button btn = (Button) findViewById(R.id.button1); 
btn.setText(String.valueOf(rnd)); 
btn.setTextColor(Color.parseColor("#000000"));} 

}}}, 100); 

然后让其中的一些具有不同背景的火一前一后。我似乎无法得到它的窍门。

我可能需要一个全新的方法来做我想做的事,但我不确定什么是最好的wat来完成我所需要的。

+0

'EventQueue'是一部分awt,它不是Android SDK的一部分...你已经使用了带有空Runnable实现的runOnUiThread ... – Selvin

+0

那么这就是为什么当我阅读使用它的时候我非常困惑:) – Oliver

+0

我已经编辑它保持巨魔在海湾。那么,你碰巧知道如何完成我所需要的? – Oliver

回答

1

您应该使用Handler,并确保您要运行该代码在运行的方法:-)

尝试是这样的,从您的活动

Handler handler = new Handler(); 
.... 

@Override 
public void onClick(View v) { 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
     // set your button color here, no need to use runOnUiThread() 
     // as this run() method is executed on Main thread 
     } 
    }, 100); 
} 
+0

谢谢!我现在就试试这个。 :) – Oliver

+0

对不起,花了这么长时间,约1000行代码在活动大声笑和一个我加了这个片段,我扔了一个错误......这导致了一个错误......这导致了一个错误......一个然后......它工作!非常感谢你,这实际上解决了我的两个问题,一个在不同的活动中。 – Oliver