2015-06-29 114 views
-9

所以裏面,我不知道如果我不遺漏任何東西或不...(這是一個雖然週末),但是,讓我們假設我有這樣的:增量按鈕

for(int i=0; i<10;){ 
    button1.setOnClickListener(blah blah blah){ 
     public void onClick(View v) { 
       i++; 
     } 
    } 
} 

它不會讓我這樣做,它崩潰,有人可以解釋爲什麼?和/或如何使這項工作的答案。如果你沒有得到它,我想在用戶點擊按鈕時進行FOR增量。我很確定我錯過了一些顯而易見的事情,當我發現它時我會很生氣......謝謝你,祝你有個愉快的一天。

+4

其實你想達到什麼? – Emil

+1

它必須給你stackoverflow例外 –

回答

4

這種方法根本行不通。如果你的目標是增加了一些和運行一套代碼,每次button1被點擊時,你需要做這樣的事情,而不是:

// somewhere in a persistent scope 
int i = 0; 

// somewhere in a function 
button1.setOnClickListener(/* ... */) { 
    public void onClick(View v) { 
    ++i; 
    // run your code 
    } 
} 
+0

這只是我想要一個能夠重新刷新一些東西每次重新啓動..猜猜我必須手動執行 –

+0

@FábioSantos你試圖用偶處理程序做什麼? – Benten

+0

@Benten好的,這是一種遊戲,它有5輪遊戲,當我點擊按鈕時,它將自己設置爲不可點擊,所以你不能發送垃圾信息,並且它變成綠色。在此之後,我想改變自己回到正常狀態。顯然,這樣做的5輪 –

2

它崩潰,因爲循環永遠不會終止,因爲i從來都不是遞增。在事件處理程序按鈕中有一個i++語句,該按鈕從未被點擊過。

0

首先,循環未終止util值達到所以它會繼續運行循環,浪費CPU週期,其次在每次迭代中創建並附加新的EventListener浪費內存。它可能會擴展提供給設備上應用程序的資源限制。 解決方案, 使用全局變量增加值並檢查回調函數onClick()中是否小於10。