HyperZen Опубликовано 2 августа, 2016 Поделиться Опубликовано 2 августа, 2016 Добрый вечер! Сабж, собственно. Как отловить двойное нажатие кнопки Back, как это сделано для выхода из программы ES проводник?! Цитата Ссылка на комментарий
0 krapotkin Опубликовано 2 августа, 2016 Поделиться Опубликовано 2 августа, 2016 if backPressedTime=0 then begin backPressedTime := now(); end else if (secondSpan(now, backpressedTime)<3) then begin doExit(); end else backPressedTime:=0; в общих чертах как-то так AngryOwl, HyperZen, Vitaldj и 2 других 5 Цитата Ссылка на комментарий
0 Rusland Опубликовано 3 августа, 2016 Поделиться Опубликовано 3 августа, 2016 krapotkin, почему-то doExit отрабатывает только при третьем нажатии Цитата Ссылка на комментарий
0 krapotkin Опубликовано 3 августа, 2016 Поделиться Опубликовано 3 августа, 2016 отладчик в руки логируем заход в каждую ветку, получаем ответ zairkz 1 Цитата Ссылка на комментарий
0 HyperZen Опубликовано 23 августа, 2016 Автор Поделиться Опубликовано 23 августа, 2016 private static long back_pressed; @Override public void onBackPressed() { if (back_pressed + 2000 > System.currentTimeMillis()) { super.onBackPressed(); } else { Toast.makeText(getBaseContext(), "Нажмите еще раз для выхода", Toast.LENGTH_SHORT).show(); } back_pressed = System.currentTimeMillis(); } Вот код для С++. Может кто его в Delphi превратить? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 23 августа, 2016 Модераторы Поделиться Опубликовано 23 августа, 2016 что то типа глобальная back_pressed = 0; //uses DateUtils if (back_pressed + 2000) > MilliSecondOfTheDay(now) then Close else ShowMessage('Нажмите еще раз для выхода'); back_pressed := MilliSecondOfTheDay(now); HyperZen и Rusland 2 Цитата Ссылка на комментарий
0 rareMax Опубликовано 23 августа, 2016 Поделиться Опубликовано 23 августа, 2016 (изменено) Type TSomeClass = Class Private Class Var back_pressed:int64; public Procedure onBackPressed();Override; End; TSomeClass.onBackPressed(); Begin if (TSomeClass.back_pressed + 2000) > System.currentTimeMillis then Begin super.onBackPressed(); End else Begin Toast.makeText(getBaseContext(), 'Нажмите еще раз для выхода', Toast.LENGTH_SHORT).show(); End; TSomeClass.back_pressed := System.currentTimeMillis(); End; Ну если чисто синтаксически - то как то так ----------- О, уже ответили, сорян, не видел Изменено 23 августа, 2016 пользователем Сысоев Максим Rusland и HyperZen 2 Цитата Ссылка на комментарий
0 HyperZen Опубликовано 28 августа, 2016 Автор Поделиться Опубликовано 28 августа, 2016 Что-то я туплю не работает, тыкните, пожалуйста, в ошибку if Key = vkHardwareBack then begin if (back_pressed + 2000) > MilliSecondOfTheDay(now) then begin Close end else begin {$IFDEF ANDROID} ToastMsg('Нажмите еще раз для выхода...'); {$ENDIF} back_pressed := MilliSecondOfTheDay(now); end; end; Цитата Ссылка на комментарий
0 sinuke Опубликовано 28 августа, 2016 Поделиться Опубликовано 28 августа, 2016 1 час назад, HyperZen сказал: Что-то я туплю не работает, тыкните, пожалуйста, в ошибку Лично я только что внедрил себе в проект вот такой код (из этой темы) и все заработало. Это в событии FormKeyUp {$IFDEF ANDROID} if (Key = vkHardwareBack) and (BackPressed + 2000 > MilliSecondOfTheDay(now))then begin Key := 0; Close; end else begin Key := 0; BackPressed := MilliSecondOfTheDay(now); Toast := TfgToast.Create('Нажмите ''Назад'' еще раз, чтобы выйти из приложения', TfgToastDuration.Short); //Toast из пакета компонет FGX try Toast.Show; finally Toast.DisposeOf; end; Exit; end; {$ENDIF} AngryOwl, Andrey Efimov и HyperZen 3 Цитата Ссылка на комментарий
Вопрос
HyperZen
Добрый вечер!
Сабж, собственно. Как отловить двойное нажатие кнопки Back, как это сделано для выхода из программы ES проводник?!
Ссылка на комментарий
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.