Korzystanie doskonałą odpowiedź Madur za wyżej, ja przedłużony to do klasy, która zajmie się różnych typów wiadomości:
public class ToastManager {
private Toast toastWarningMessage;
private Toast toastAddMessage;
...
public void messageWarning(Context context, String message) {
if(toastWarningMessage == null) {
toastWarningMessage = Toast.makeText(context, message, Toast.LENGTH_SHORT);
} else {
toastWarningMessage.cancel();
toastWarningMessage.setText(message);
}
toastWarningMessage.show();
}
public void messageAdd(Context context, String message) {
if(toastAddMessage == null) {
toastAddMessage = Toast.makeText(context, message, Toast.LENGTH_SHORT);
} else {
toastAddMessage.cancel();
toastAddMessage.setText(message);
}
toastAddMessage.show();
}
...
}
I jest to wywoływane z mojej głównej działalności:
ToastManager toastManager;
...
private void toastWarningMessage(String message) {
if(toastManager == null) toastManager = new ToastManager();
toastManager.messageWarning(this, message);
}
Powodem klasyfikacji wiadomości jest upewnienie się, że żadne ważne wiadomości nie są nadpisywane. To rozwiązanie wydaje się łatwe do ponownego wykorzystania, ponieważ obejmuje tylko zmianę nazwy toastów i nazw funkcji.
Gdy użytkownik naciska przycisk, toast za każdym razem jest automatycznie anulowany dla tego samego typu wiadomości. Jedyny problem polega na tym, że użytkownik może wysyłać wiadomości zawierające mieszankę wiadomości. Prowadzi to do tego, że pierwsza wiadomość powtarza się, a kiedy w końcu wygaśnie, inne wiadomości zostaną wyświetlone po każdym z nich. Naprawdę nie jest to ogromny problem, ale coś, o czym należy pamiętać.
Nie rozważałem możliwych minusów posiadania wielu instancji Toast.
Możliwy duplikat [Anuluj tosty przy wyjściu z aplikacji i wyświetlaniu toastu] (http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and- kiedy-toast-jest-pokazywany) –