2014-09-26 7 views
1

Я хотел бы спросить, есть ли возможность позвонить методу несколько раз, давая 5-секундную задержку между каждым вызовом.Android Как вызвать метод несколько раз с задержкой между ними

Но я очень хочу, чтобы вызвать метод Toas() примерно 7 раз, а с моим кодом ниже, он выглядит неправильно.

Спасибо ребята

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

CallMultipleToast(); 


........ 



    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); 


    } 





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

Какой конкретный Прецедент сценарий вы хотите иметь это? –

+0

Не нужно вставлять runnables или иметь несколько обработчиков. Одного обработчика должно быть достаточно. Если все исполняемые файлы отображают тосты, просто создайте подкласс, который принимает сообщение в качестве аргумента в конструкторе. –

+0

Спасибо, ребята, за ваш совет – Joolah

ответ

3

может быть, вы можете сделать это следующим образом:

private void CallMultipleToast(){ 
    Thread t = new Thread(){ 
     @Override 
     public void run(){ 
      try { 
       for(i=0;i<7;i++){ 
        Toast("Message "+(i+1)); 
        sleep(5000); 
       } 

      } catch (InterruptedException ex) { 
       Log.i("error","thread"); 
      } 
     } 
    }; 
    t.start(); 
} 
0

Попробуйте это:

final int DELAY= 5000; 
int count = 0; 
String[] msgs = {"one", "two", "three", "four", "five"}; 
Handler handler = new Handler(); 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     if (count < 5) { 
      Toast(msgs[count]); 
      handler.post(runnable); 
     } 
     count++; 
    } 
}; 

handler.postDelayed(runnable, DELAY); 
Смежные вопросы