2014-09-25 3 views
1

Я хотел бы спросить, если есть лучший способ вызвать метод в android несколько раз. Но то, что я действительно хочу знать, заключается в том, как задержать, что showToas("Message 1"); звоните в течение 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

+0

Привет, я обновил свой код, не могли бы вы посоветовать. спасибо – Joolah

ответ

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

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

+0

Его совершенно другой код, который вы использовали. Вы пробовали таймер? –

+0

Извините MysticMagic, я хотел спросить вас. Основываясь на моем новом обновленном коде. смогу ли я использовать Таймер? – Joolah

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 (String текст) много раз, это только изменяет содержание тоста

Смежные вопросы