如何立即結束前一個Toast ?

Toast是一個方便又簡單的工具,可以直接在畫面上顯示簡短的訊息以通知使用者。
最簡單的呼叫方式:
Toast.makeText(this, "Hello Toast!", Toast.LENGTH_SHORT).show();

但這樣會有一個問題,若使用者短時間內連續執行了一堆會產生Toast的操作,Toast會被排在佇列中依序顯示,直到前一個Toast的時間到了之後才顯示下一個Toast,Toast一直被累積的結果就是無法立即反應使用者的操作。

那麼要如何讓新的Toast能立即被顯示呢?
方法如下:
private Toast mToast;

private void showToast(String msg) {
        if (mToast == null) {
            mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
        }
        mToast.setText(msg);
        mToast.show();
    }

需要使用Toast時,呼叫showToast()即可,此時若舊的Toast還在,會立刻被更新為新的Toast訊息。

參考資料:
http://stackoverflow.com/questions/5503682/how-to-cancel-toast-created-in-a-different-method-on-android

這個網誌中的熱門文章

Android Studio 如何調整字型大小

App在Google Play被停權與恢復的經驗分享

Android Studio 無法在實機上 Run/Debug 程式?