2014-07-02 2 views
-4

Обычно без необходимости вводить код функции обратной связи Android и позволяет вернуться к предыдущей форме. В моем приложении, над которым я работаю, вместо того, чтобы возвращаться, он отключает приложение. Я также пытался обработать кнопку «Назад» по коду, но это также не сработало, оно проигнорировало код!Android backbutton не работает в Delphi XE5/XE6

Вот код, который я использовал для обработки BackButton:

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; 
    var KeyChar: Char; Shift: TShiftState); 
var 
    FService: IFMXVirtualKeyboardService; 
begin 
    if Key = vkHardwareBack then 
    begin 
    TPlatformServices.Current.SupportsPlatformService 
     (IFMXVirtualKeyboardService, IInterface(FService)); 
    if (FService <> nil) and (TVirtualKeyboardState.Visible 
     in FService.VirtualKeyBoardState) then 
    begin 
     // Back button pressed, keyboard visible, so do nothing... 
    end 
    else 
    begin 
     // Back button pressed, keyboard not visible or not supported on this platform 
     close; 
    end; 
    end; 
end; 

я использовал, чтобы использовать Delphi xe5 и теперь я использую XE6 и выразил надежду, что проблема была решена, но regrettingly нет. Также приведенный выше код предназначен для версии Delphi XE6, для XE5 он немного отличается.

UPDATE:

Я нашел исправление для моей проблемы. Но мой delphi все еще реагирует действительно странно. Когда я создаю новый проект и добавляю файлы из своего предыдущего проекта, я могу вернуться с помощью андроида. Но как только я снова сохраню проект, а затем попытаюсь запустить его, он перестанет работать.

+0

Работает ли этот код в приложении для ванили? –

+0

Да, да. Также, когда вы смотрите вверх по дельфи-андроидному подлокотнику, вы получаете этот код. Для других людей он работает – Remi

+1

Итак, код в вопросе ведет себя так, как ожидалось, в приложении для ванилин, но не в вашем приложении. В этот момент вопрос полностью касается кода в вашем приложении, а не кода в вопросе. Код в вашем приложении может быть просмотрен только вами. Как мы можем помочь? Пришло время сделать SSCCE. –

ответ

0

После создавая новый проект в новом каталоге, а затем добавляя все файлы тоже в проект, который проблема исчезла! Проблема, казалось, была где-то в файле dproj. Я тоже попробовал найти его, но для меня было важно найти его.

0

Кнопка обратной связи имеет специальную функцию в андроид-каркасе- onBackPressed(). Я не знаю, перенесено ли это на Delphi, но я так полагаю. Он не придет через этот API

+0

Да, он должен работать в Delphi, и странно, что в другом моем проекте он работает. И дело в том, что мне не нужно было ничего делать для этого. – Remi

-1

Вы должны ловушкой «Назад» в вашем нажатие FormKeyUp процедуру так, чтобы она не передается в операционную систему после того, как вы будете действовать на нем:

if (Key = vkHardwareBack) then 
    begin 
    Key := 0; 
    { Do something else } 
    end;