2016-11-28 34 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