Показывать только один тост в клике? - PullRequest
1 голос
/ 12 июля 2011

Я хочу уведомить пользователя, что он достиг минимального значения. Значение устанавливается нажатием кнопки. Если он продолжит нажимать на кнопку, когда будет достигнуто минимальное значение, тосты начнут появляться и ставиться в очередь, поэтому исчезновение всех занимает много времени.

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 ]

5 голосов
/ 02 октября 2012
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();
    }
}
5 голосов
/ 12 июля 2011

Добавить флаг, который указывает, была ли кнопка уже нажата или нет:

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;
            }
    });
3 голосов
/ 12 июля 2011

Как только он достигнет своего предела, отобразите тост и отключите кнопку onClick, переопределив button.setEnabled(false);

Итак, теперь пользователь не сможет нажать кнопку более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...