2014-09-06 4 views
1

Использование Delphi XE6Как закрыть соединение с применением привязывать в Android

У меня есть эти коды:

procedure TMainForm.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 TVirtualKeyBoardState.Visible in FService.GetVirtualKeyBoardState then 
    begin 
     FService.HideVirtualKeyboard; 
    end else 
    begin 
     if TabControl1.ActiveTab = TabItem2 then 
     begin 
     TabControl1.ActiveTab := TabItem1; 
     Key := 0; 
     end else 
     begin 
     Self.Hide; 
     MainActivity.Finish; 
     Application.MainForm.DisposeOf; 
     Key := 0; 
     end; 
    end; 
    end; 
end; 

procedure TMainForm.ConnectButtonClick(Sender: TObject); 
begin 
    TetheringManager1.Enabled:=True; 
    TetheringAppProfile1.Enabled:=True; 
    TetheringManager1.AutoConnect(3000); 
end; 

С аппаратной задней кнопки андроид приложение закрывается/открывается нормально, когда TetheringManager и TetheringAppProfiler не включен и не связанный. Но когда подключено, приложение Android не закрывается правильно и не открывается правильно (я вижу только черный экран, но в следующий раз приложение открывается нормально). Есть ли способ, как я могу отключить привязку?

+0

Кажется, что когда TetheringAppProfile подключен к TetheringM anager через TetheringAppProfile1.Manager, тогда вы можете получить ошибку сегментации (11) при обработке кнопки «Назад». И это указывает на GStack.Disconnect, когда это произойдет. – mhieta

ответ

0

Используя эти:

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); 
var 
    I: Integer; 
begin 
    for I := TetheringManager1.PairedManagers.Count - 1 downto 0 do 
    TetheringManager1.UnPairManager(TetheringManager1.PairedManagers[I]); 
end; 

procedure TMainForm.FormDestroy(Sender: TObject); 
begin 
    TetheringAppProfile1.Enabled:=False; 
    TetheringManager1.Enabled:=False; 
end; 

С:

if Key = vkHardwareBack then 
    begin 
    if TabControl1.ActiveTab = TabItem2 then 
    begin 
     Key := 0; 
     TabControl1.ActiveTab := TabItem1; 
    end; 
    end; 

И просто при подключении снова:

TetheringAppProfile1.Enabled:=True; 
    TetheringManager1.Enabled:=True; 

У меня нет никаких проблем больше :)