首页 文章

Codename One中的按钮在Android实际设备上处于非活动状态,但在模拟器下工作

提问于
浏览
1

在我的Codename One应用程序中,我有2个表单A和B.表单包括每10秒更新一次的MapContainer和一个浮动按钮 . 如果用户点击浮动按钮,他们可以拍照,然后显示一个对话框,如果他们选择“确定”,则显示B表格:

new B_Form(theme).show(); // (where theme is the Resources used in A Form).

此B表单包括执行某些操作的按钮(即录制音频,播放录制的音频,转到表单A) . 按钮在模拟器中工作(虽然不支持录制,因此显示错误,但是可以预期),即用户可以单击它 .

但是在实际设备(Android KitKat)上显示了B Form,但是虽然按钮都已启用,但无法执行任何操作 . 按下时按钮甚至不显示“按下的样式”,并保持“未选择状态” .

唯一有效的按钮是工具栏中的 setBackCommand (即屏幕左上角的左箭头) .

因此看起来B形式没有被考虑在内 . 此外,如果我在B表格上滑动手指,则会显示一个表格并移动 Map . 如果我从A表单中删除了MapContainer,那么B表单在设备上按预期工作 .

EDIT

Surprisingly enough if I call a Form C from the side menu bar via the hamburger menu, the buttons on that Form C work seamlessly!

所以我觉得MapContainer给我带来了麻烦,我该怎样做才能使B Form按预期工作?

任何帮助,赞赏,

问候,

2 回答

  • 0

    MapContainer 是一个peer component,我们启用了Android上的新同行,它隐藏了对等系统的一些复杂性,但可能会引发其他问题 .

    这可能是对等组件系统的错误行为,尽管我很难理解如何重现这一点 . 侧边菜单可以工作,因为侧边菜单是一个完全不同的形式,没有 Map 容器 .

  • 1

    所以这是我找到的解决方法 .

    在显示表单B之前,我删除了MapContainer并重新验证了表单A:

    googleMap.remove(); // googleMap is my MapContainer defined somewhere else
    this.revalidate();
    

    虽然它有效但我仍然不明白为什么问题中描述的问题会发生 .

相关问题