Используя отличный ответ Madur в выше, я протянул это в класс, который будет иметь дело с различными типами сообщений:
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();
}
...
}
И это вызвано из моей основной деятельности:
ToastManager toastManager;
...
private void toastWarningMessage(String message) {
if(toastManager == null) toastManager = new ToastManager();
toastManager.messageWarning(this, message);
}
Причина классификации сообщений заключается в том, чтобы не перезаписывать важные сообщения. Это решение кажется простым повторным использованием, поскольку оно включает только переименование Тостов и имен функций.
Когда пользователь спам кнопки, тост будет просто отменять каждый раз для одного и того же типа сообщения. Единственная проблема заключается в том, что пользователь может спамить соединение сообщений. Это приводит к тому, что первое сообщение повторяется, и как только оно окончательно истекает, другие сообщения отображаются один раз. Не очень большая проблема, но что-то, о чем нужно знать.
Я не рассматривал возможные недостатки, связанные с несколькими экземплярами Toast.
Возможный дубликат [Android отменить тост при выходе из приложения и при показе тоста] (http://stackoverflow.com/questions/16098151/android-cancel-toast-when-exiting-the-app-and- когда-тост-бытие-показано) –