2011-12-19 72 views
3

有沒有一種方法可以以編程方式阻止吐司消息?Android以編程方式停止Toast通知?

說我有一個按鈕,我通過點擊敬酒的消息滾動,並在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

是敬酒不吃吃#取消(),你需要什麼? http://developer.android.com/reference/android/widget/Toast.html#cancel%28%29 – ernazm 2011-12-19 15:24:37

+0

可能從http://stackoverflow.com/questions/2755277/android-hide-all-showed-重複烤麪包的消息 – 2011-12-19 15:25:07

回答

2

你全部免費cancel the Toast object

+0

取消沒有做對我來說,仍然存在一個隊列 – 2011-12-19 15:32:59

+0

@Ben:保持你的'Toast'作爲參考,當你調用'makeText(...)'之後,你可以取消它。隊列只能通過調用'Toast'對象的'cancel()'來取消。 – Wroclai 2011-12-19 15:35:57

+0

我已經添加了代碼,它已被簡化。你能解釋一下你的意思麼? – 2011-12-19 15:43:33

4

創建一個自定義的全局對象

private Toast toast; 

初始化它的onCreate

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

每當你需要出示吐司

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

殺死基於需求的所有消息的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 2013-08-23 23:06:18

相關問題