2015-07-20 22 views
0

我想做一個Android應用程序&我需要知道如何重做一個動作,直到出現一些情況。 我試着這樣做:重做一個動作,並停止它的條件

while (!b.ButtonClicked()) { 

    doThisAction(); 

    } 

這將永遠不會停止(無窮大)因爲動作監聽器是外循環(同時),這樣的情況是不會得到滿足。 我希望你能理解我......

+0

使用偵聽器而不是while循環。 –

回答

0

最好用一個標誌來達到目的。

//YourActivity 
public static Boolean BUTTON_CLICKED_FLAG=false; 

現在你可以使用這樣的函數

public initInfiniteLoop(){ 

    //starts the loop 
    while(BUTTON_CLICKED_FLAG){ 
    //your code here 

    } 
} 

在您的onClick()的按鈕方法只需撥動旗BUTTON_CLICKED_FLAG並啓動循環,如果它尚未啓動。

onClick(){ 
//first toggle the status 
YourActivity.BUTTON_CLICKED_FLAG=!YourActivity.BUTTON_CLICKED_FLAG; 

//then initiate loop if it is not already started 
if(YourActivity.BUTTON_CLICKED_FLAG=true){ 
initInfiniteLoop(); 
//you can replace the if condition and function with the loop if you want. 
} 
} 

如果循環已經運行,當我們將靜態值BUTTON_CLICKED_FLAG改爲false時,它將停止。

即使它可以工作,我寧願爲此目的的線程。

+0

這是一個無限循環,問題是循環從一個按鈕開始,並從同一個按鈕停止。 –

+0

檢查編輯 – JIthin

0

計數器變量設置爲0,並且按鈕的方法的onclick內將其值設置爲1。

while(c==0) 

運行,而直到ç== 0檢查,並告訴我,如果它的工作原理

+0

我試過這個,我不工作....問題是,clickListner等到循環完成... 因此,在您的解決方案,var「c」永遠不會得到值1 –

0
button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // check condition: if true then do something 

     } 
    }); 
相關問題