Используя превосходный ответ Мадура выше, я расширил его до класса, который будет заниматься различными типами сообщений:
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);
}
Причина классификации сообщений состоит в том, чтобы убедиться, что никакие важные сообщения не перезаписаны. Это решение, кажется, легко использовать повторно, поскольку оно включает только переименование тостов и имен функций. * +1007 *
Когда пользователь нажмет кнопку, тост будет отменяться каждый раз для одного и того же типа сообщения. Единственная проблема заключается в том, если пользователь может спамить смесь сообщений. Это приводит к тому, что первое сообщение повторяется, и как только оно истекает, остальные сообщения отображаются по одному разу. Не очень большая проблема, но о чем нужно знать.
Я не рассматривал возможные недостатки наличия нескольких экземпляров Toast.