Перейти к содержанию
  • 0
alewka006

[Android] Возврат к предыдущей открытой форме по нажатию на кнопку Назад (Back)

Вопросы

Подскажите, пожалуйста, как сделать такие переходы между формами, чтобы при нажатии на Андроиде системной кнопки "Назад" можно было вернуться на предыдущую форму?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0

Если на Андроиде в приложении Вы создаете новые формы ''newForm.Show" или newForm.ShowModal(procedure( ...., то кнопка "Назад" по умолчанию перемещает обратно между формами.

 

Может быть имелось ввиду создание обработчика более сложного поведения внутри формы? В таком случае, при нажатии кнопки "Назад" (а так же "Menu") на форме срабатывает событие onKeyUp.Там-то и можно организовать обработку поведения:

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
...
      // Обработка аппаратной клавиши "Back"
      if Key = vkHardwareBack then
      begin
        //ваш обработчик поведения
        ....
        Key := 0; // отмена стандартного действия

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо за ответ. Попробую. Без этого обработчика при нажатии кнопки назад у меня приложение закрывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Спасибо за ответ. Попробую. Без этого обработчика при нажатии кнопки назад у меня приложение закрывается.

Точно? Может у Вас все же форма одна? Я даже поэкспериментировал на 3.2 и 4.4.

Извините, пока железки с 5-м нет :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В первом сообщении писал, что если 'новые формы ''newForm.Show" или newForm.ShowModal"...'

 

Тогда да, только в обработчике нажатия клавиши анализировать состояние форм.

 

Но по моему мнению (не для спора), Form1.Visible:=false; Form2.Visible:=true; не лучший стиль программирования. Для андроида в плане экономии ресурсов есть смысл создавать/убивать формы динамически. А если у Вас всего лишь панели интерфейса пользователя, и которые активно используются, то есть другие способы их отображения. Но все равно потребуется писать обработчик. Если без, то смотрите решение выше...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

Если на Андроиде в приложении Вы создаете новые формы ''newForm.Show" или newForm.ShowModal(procedure( ...., то кнопка "Назад" по умолчанию перемещает обратно между формами.

 

Может быть имелось ввиду создание обработчика более сложного поведения внутри формы? В таком случае, при нажатии кнопки "Назад" (а так же "Menu") на форме срабатывает событие onKeyUp.Там-то и можно организовать обработку поведения:

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
...
      // Обработка аппаратной клавиши "Back"
      if Key = vkHardwareBack then
      begin
        //ваш обработчик поведения
        ....
        Key := 0; // отмена стандартного действия

Спасибо, тоже пригодится, у меня в проекте одна форма и куча слайдов в TabControl, ума не мог приложить как сделать чтобы по кнопке назад оно возвращалось на главный слайд, ОГРОМНОЕ СПАСИБО! :D  :D  :D  :D  :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Подскажите, пожалуйста.

Есть такой код:

unit more;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.Objects, FMX.WebBrowser;
 
type
  TForm5 = class(TForm)
    Logo: TImage;
    Layout1: TLayout;
    WebBrowser1: TWebBrowser;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form5: TForm5;
 
implementation
 
{$R *.fmx}
 
uses main;
 
procedure TForm5.FormCreate(Sender: TObject);
begin
logo.Width:=Form5.ClientWidth;
logo.Height:=Form5.ClientWidth/2.8;
WebBrowser1.Width:=Form5.ClientWidth-30;
WebBrowser1.Height:=Form5.ClientHeight-30;
end;
 
 
procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
// Обработка аппаратной клавиши "Back"
      if Key = vkHardwareBack then
      begin
        //ваш обработчик поведения
        WebBrowser1.Visible:=False;
        Key := 0; // отмена стандартного действия
       end;
 
end;
 
procedure TForm5.SpeedButton1Click(Sender: TObject);
begin
WebBrowser1.Visible:=True;
end;
 
 
 
end.
 
При нажатии на кнопку на экране появляется браузер. При нажатии кнопки Назад на телефоне он скрывается. Но стоит прикоснуться к браузеру и обработчик перестает работать. 
Что можно сделать чтобы при любом раскладе при нажатии Назад браузер скрывался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

попробуйте обработать кнопку в обработчике браузера, а не формы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


  • Похожий контент

    • От Эрик Шакиров
      Привет всем! Кто нибудь может подсказать как реализовать анимацию переходов между формами в Android без использования TabControl? Или подсказать в какую сторону "рыть"
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...