我想將文本設置爲25個按鈕,但每個文本在5秒後都會出現。我嘗試過使用很多不同的方法。我嘗試使用Thread.sleep(5000),但我的程序崩潰。然後我試圖創建一個Handler,但它崩潰了。有人可以告訴我爲什麼嗎?或者是有另一種方式,我應該推遲文本:Android延遲文本
*注意:在我的代碼中,我使用findViewById方法,但決定不要在這裏發佈它爲了簡單和重複的緣故 - 所以這不是問題。
public class Game extends Activity {
protected List<String> my_list = new ArrayList<String>();
protected String letters[];
protected List<Button> button_list = new ArrayList<Button>();
Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
b11, b12, b13, b14, b15, b16, b17, b18, b19, b20,
b21, b22, b23, b24;
Random rand = new Random();
int random_counter;
int my_list_counter = 25;
int i;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
letters = new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y"};
Button[] bttn_arr = new Button[] {b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10,
b11, b12, b13, b14, b15, b16, b17, b18, b19, b20,
b21, b22, b23, b24};
my_list.addAll(Arrays.asList(letters));
button_list.addAll(Arrays.asList(bttn_arr));
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
for (i=0; i<25; i++){
random_counter = rand.nextInt(my_list_counter);
button_list.get(i).setText(my_list.get(random_counter));
my_list.remove(my_list.get(random_counter));
my_list_counter--;
handler.postDelayed(this, 5000);
}
}
});
}
}
**從來沒有**在UI線程中使用Thread.sleep。處理程序是要走的路。如果您的程序崩潰了,請查看您在控制檯中獲得的異常,可能是空指針異常或類似情況。順便說一下,你同時安排了25個電話到同一個可運行的,要小心,這可能會成倍地增長 – rupps 2014-11-02 05:05:46
感謝您的建議。我仍然試圖找出問題所在。我正在實施Kaylwin的答案,但似乎仍然存在一個錯誤,因爲我在下面發佈。稍稍改變Kaylwin的代碼後,程序等待5秒鐘,然後顯示所有文本。它不會每隔5秒顯示每個文本... – user2456977 2014-11-02 14:49:22