2014-09-25 71 views
1

我想問一下,如果有更好的方法可以在android中多次調用一個方法。 但是我真正想知道的是,如何延遲哪些呼叫需要10秒,並且只能在呼叫下一個呼叫之後才能延遲。如何在Android中多次調用方法

感謝

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ... 


    showToas("Message 1"); 
    showToas("Message 2"); 
    showToas("Message 3"); 
    showToas("Message 4"); 
    showToas("Message 5"); 
    showToas("Message 6"); 
    showToas("Message 7"); 
     ... 


    private void showToas(String message){ 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 

VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

修訂

這是我設法得到它的工作了。 給每個方法調用一個5秒的中斷,但我認爲最好的方法是實現這個功能嗎?你能不能請教。由於

private void CallMultipleToast(){ 

     Runnable call_1 = new Runnable() { 
      @Override 
      public void run() { 
       Toast("Message one"); 


        Runnable call_2 = new Runnable() { 
         @Override 
         public void run() { 
          Toast("Message two"); 


           Runnable call_3 = new Runnable() { 
            @Override 
            public void run() { 
             Toast("Message three"); 
             //CAN I ADD MORE 
            } 
           };//end call_3 
           new Handler().postDelayed(call_3, 5000); 


         } 
        };//end call_2 
        new Handler().postDelayed(call_2, 5000); 

      } 
     };//end call_1 
     new Handler().postDelayed(call_1, 5000); 


} 
+0

嘗試使用'Handler.postDealy()'和'Runnable'內容。 – PageNotFound 2014-09-25 08:56:25

+0

嗨,我已經更新了我的代碼,請你指教一下。謝謝 – Joolah 2014-09-25 09:44:38

回答

2

嘗試這種方式

Runnable r2=new Runnable() { 
       @Override 
       public void run() { 
        // TODO Auto-generated method stub 
        showToas("Message 1"); 
       } 
      }; 

new Handler().postDelayed(r2,1000); 

做同樣的他人,增加延時

+0

嗨,我已經更新了我的代碼,基於你的exmaple,請你指教。謝謝 – Joolah 2014-09-25 09:50:22

1

您可以使用Timer爲:

//global variable counter 
int counter = 1; 

Timer t = new Timer(); 
t.scheduleAtFixedRate(new TimerTask() { 

    @Override 
    public void run() { 
     showToas("Message "+counter); 
     counter++; 
    } 

}, 0, 10000); //It will be repeated every 10 seconds 

希望這有助於。

+0

嗨,我已經更新了我的代碼,基於你的exmaple,請你指教。謝謝 – Joolah 2014-09-25 09:44:55

+0

它使用完全不同的代碼。你有沒有試過計時器? – 2014-09-25 09:46:08

+0

抱歉MysticMagic,我打算問你。基於我的新的更新代碼。我可以使用Timer嗎? – Joolah 2014-09-25 09:51:50

0
runOnUiThread(new Runnable() { 
     public void run() { 
      try { 
       for(String str : array){ 
        showToast(str); 
        Thread.sleep(10000L); 
       } 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 
0
public class ToastShow { 
private Context context; 
private Toast toast = null; 
public ToastShow(Context context) { 
    this.context = context; 
} 
public void toastShow(String text) { 
    if(toast == null) 
    { 
     toast = Toast.makeText(context, text, Toast.LENGTH_SHORT); 
    } 
    else { 
     toast.setText(text); 
    } 
    toast.show(); 
} 

}

,你可以調用toastShow(字符串文本),很多時候它只是改變吐司