2011-12-19 6 views
3

プログラムでトーストメッセージを止める方法はありますか?Androidプログラムでトースト通知を停止しますか?

私はトーストメッセージをスクロールするためにクリックするボタンがあり、onclickイベントではキュー内のすべてを停止して新しいメッセージを表示したがっています。

おかげで、

ベン私のコードの簡易版は、以下の通りです - コード:

public class Help extends Activity{ 

LinearLayout background; 
int screenNo = 1; 
Toast toast; 

/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.help); 

     background = (LinearLayout) findViewById(R.id.helpLayout); 

     ImageButton next = (ImageButton) findViewById(R.id.imageButtonNext); 
     next.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       toast.cancel(); 
       showNextScreen(); 
      }});   
} 

private void showMessageBox(String title, String msg) { 
    AlertDialog.Builder b = new AlertDialog.Builder(this); 
    b.setTitle(title); 
    b.setMessage(msg); 
    b.setPositiveButton("Next", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
      showNextScreen(); 
     }}); 
    b.setNegativeButton("Quit Help", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
       returnHome(); 
     }}); 
    b.show(); 
} 

private void showNextScreen() { 
    int time = 7000; 
    String tstMsg = "error";  

    switch (screenNo) { 
    case 1: 
     break;   
    case 2: 
     break;   
    case 3: 
     break;   
    case 4: 
     break; 
    case 5: 
     toast.cancel(); 
     returnHome(); 
     break; 

    default: 
     break; 
    } 

    if(screenNo < 5) 
    { 
    toast=Toast.makeText(this, tstMsg, time); 
    toast.setGravity(Gravity.BOTTOM, 0, 0); 
    toast.show(); 
    screenNo++; 
    } 

} 
} 
+0

Toast#cancel()は必要ありませんか? http://developer.android.com/reference/android/widget/Toast.html#cancel%28%29 – ernazm

+0

おそらくhttp://stackoverflow.com/questions/2755277/android-hide-all-showed- toast-messages –

答えて

2

あなたはすべてのcancel the Toast objectに無料です。

+0

キャンセルはできません。まだキューがあります。 –

+0

@Ben: 'makeText(...)'を呼んでいるときに 'Toast'を参照のままにしておき、それをキャンセルすることができます。キューは、個々の 'Toast'オブジェクトに対して' cancel() 'を呼び出すことによってのみ取り消すことができます。 – Wroclai

+0

コードを追加しました。簡略化されました。参照として保持することによって何を意味するのか説明できますか? –

4

では、要件に基づいて、すべてのメッセージを殺すために乾杯

toast.setText("Hi...."); 
toast.show(); 

を表示する必要があるときのonCreate

toast = Toast.makeText(YOUR_CLASS_NAME.this, "", Toast.LENGTH_SHORT); 

それを初期化するカスタムグローバルオブジェクト

private Toast toast; 

を作成onPauseまたはonDestroy

toast.cancel(); 
5

これは私がこれを達成した方法です。

public static Toast toastShow; 

public void showToast(Activity actRef, String message) { 

    if (toastShow == null 
      || toastShow.getView().getWindowVisibility() != View.VISIBLE) { 
     toastShow = Toast.makeText(actRef, message, Toast.LENGTH_SHORT); 
     toastShow.setGravity(Gravity.CENTER, 0, 0); 
     toastShow.show(); 
    } 
} 

上記のコードを別のクラスに定義して、メッセージを表示するクラスをインスタンス化すると、それで完了します。

+1

ニースのソリューション! +1 – Fygo

関連する問題