Перейти к содержанию
Fire Monkey от А до Я
  • 0

Отловить двойное нажатие кнопки Back...


HyperZen

Вопрос

Рекомендуемые сообщения

  • 0
if backPressedTime=0 then
begin
  backPressedTime := now();
end
else
if (secondSpan(now, backpressedTime)<3) then
begin
  doExit();
end
else
  backPressedTime:=0;

в общих чертах как-то так

Ссылка на комментарий
  • 0
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
  • Модераторы

что то типа

глобальная back_pressed = 0;
//uses DateUtils

if (back_pressed + 2000) > MilliSecondOfTheDay(now) then
   Close
 else
   ShowMessage('Нажмите еще раз для выхода');
 back_pressed := MilliSecondOfTheDay(now);

 

Ссылка на комментарий
  • 0
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;

Ну если чисто синтаксически - то как то так

-----------

О, уже ответили, сорян, не видел

Изменено пользователем Сысоев Максим
Ссылка на комментарий
  • 0

Что-то я туплю :) не работает, тыкните, пожалуйста, в ошибку :)

  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
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}

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...