Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Запрет многократного нажатия кнопок


Автор: andrewjr20 29.9.2012, 20:27
Добрый вечер
Столкнулся с такой проблемой: при работе клиента на j2me (сокеты, связь с асинхронным сервером) пользователи частенько умудряются нажать на одну и ту же кнопку несколько раз, то есть, как пример, в окне выбора продукта успевают нажать кнопку "Выбрать" 3-4 раза до того момента, пока данные уйдут серверу, обработаются, вернутся и обновят экран - в результате серверу уходят те самые 3-4 запроса на выполнение одной и той же операции, от чего хотелось бы уйти. Как можно поступить в данном случае? Есть несколько идей, но в каждой видны жёсткие недочёты:
1 - в конце обработчика каждого нажатия блокировать или вообще удалять кнопку;
2 - в каждом обработчике вешать счётчик нажатий, и проверять, не нажималась ли ещё эта кнопка, и если нажатие уже было - не выполнять действий, а после каждого обновления экрана счётчики на кнопках обнулять;
3 - завести какой-нибудь таймер, и разрешать нажатия только раз в секунду (не особо пока понимаю, как такое будет работать - но это лишь идея).

Но может я всё усложняю и есть настройки мидлета, которые запрещают жать часто кнопки? Потому что, например, если по первому пункту блокировать кнопку - многократное хардварное нажатие на первом экране после обновления и появления новых кнопок нажмёт одну из кнопок второго экрана, аналогично и второй пункт. 

Заранее спасибо

Автор: AntonSaburov 30.9.2012, 15:39
IMHO нагляднее будет блокировать кнопки - чтобы было понятно, что нажимать бесполезно.

Автор: andrewjr20 30.9.2012, 19:21
Завёл пока заглушку - получилось более просто и наглядно: при нажатии кнопки появляется форма с текстом "обработка..." без никаких кнопок, и как только приходят необходимые данные от сервера, рисуется уже та форма, которая соответствует присланным данным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)