You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ Builder Tokyo 10.2.3 FMX安卓应用未点虚拟键盘Next崩溃求助

针对C++ Builder Tokyo 10.2.3 FMX安卓返回键崩溃问题的解决方案

兄弟,我之前在C++ Builder Tokyo里也碰到过类似的FMX安卓返回键崩溃问题,结合你的描述,给你几个靠谱的排查和解决方向:

1. 排查Edit控件的生命周期与内存引用问题

当你退出带Edit的表单回到上一页后,这个表单可能没有被正确释放,或者有其他控件/全局变量还持有Edit的指针,导致系统返回时访问了已释放的内存。试试这几个操作:

  • 在表单的OnDestroy事件里手动清理Edit的关联:
    void __fastcall TForm2::FormDestroy(TObject *Sender)
    {
        // 清空内容并解除父控件关联
        Edit1->Text = L"";
        Edit1->Parent = nullptr;
    }
    
  • 检查是否有全局变量、回调函数或者其他表单的控件还保留着这个Edit的指针,确保这些引用在表单销毁时被清空。

2. 手动处理安卓返回键,避免键盘状态冲突

FMX对安卓原生返回键的处理有时候会和虚拟键盘状态冲突,尤其是Edit还持有焦点的时候。你可以重写表单的OnKeyDown事件,先处理键盘再关闭表单:

void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key, System::WideChar &KeyChar,
    TShiftState Shift)
{
    if (Key == vkHardwareBack)
    {
        // 先让Edit失去焦点并隐藏虚拟键盘
        if (Edit1->IsFocused())
        {
            Edit1->ClearFocus();
            IFMXVirtualKeyboardService *KeyboardService;
            if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXVirtualKeyboardService), &KeyboardService))
            {
                KeyboardService->HideVirtualKeyboard(Edit1);
            }
        }
        // 关闭当前表单
        Close();
        Key = 0; // 拦截系统默认的返回键处理
    }
}

3. 检查C++ Builder 10.2.3的已知BUG与补丁

Tokyo 10.2.3本身存在一些FMX安卓的稳定性问题,尤其是输入控件和表单切换相关的。你可以:

  • 安装Embarcadero针对10.2.3的最新补丁(比如官方的Update 3后续小补丁);
  • 去Embarcadero的Quality Portal搜索类似的崩溃报告,看看有没有官方给出的临时解决方案。

4. 强制转移控件焦点,避免残留引用

在表单关闭时,把焦点从Edit转移到一个非输入控件(比如隐藏的Button),确保Edit不会因为持有焦点而被系统继续引用:

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    // 假设你有一个隐藏的Button控件HiddenBtn
    HiddenBtn->SetFocus();
}

内容的提问来源于stack exchange,提问作者mesutuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:04:55