Показывать только один тост в клике?
Я хочу уведомить пользователя, что он достиг минимального значения. Значение устанавливается нажатием кнопки. Если он продолжит нажимать на кнопку, когда будет достигнуто минимальное значение, тосты начнут появляться и ставиться в очередь, поэтому исчезновение всех занимает много времени.
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (value < MIN_VALUE) {
Toast.makeText(MyActivity.this, "You have reached the minimum value",
Toast.LENGTH_SHORT).show();
}
});
Как я могу сделать только первый тост, чтобы он появлялся при нажатии кнопки? Таким образом, если пользователь продолжит нажимать кнопку, другие тосты не появятся.
3 ответа
Решение
Добавьте флаг, который указывает, была ли кнопка уже нажата или нет:
btn.setOnClickListener(new View.OnClickListener() {
boolean pressed = false;
public void onClick(View view) {
if ((value < MIN_VALUE) && (!pressed)) {
Toast.makeText(MyActivity.this, "You have reached the minimum value",
Toast.LENGTH_SHORT).show();
pressed = true;
}
});
public static void showToast(Context cont, String message) {
if (mToast == null) {
mToast = Toast.makeText(cont, message, Toast.LENGTH_SHORT);
}
if (!mToast.getView().isShown()) {
mToast.setText(message);
mToast.show();
}
}
Как только он достигнет своего предела, отобразите тост и отключите кнопку onClick, переопределив button.setEnabled(false);
Таким образом, теперь пользователь не сможет нажать кнопку более одного раза.