在我的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表格上滑动手指,则会显示一个表格并移动地图。如果我从A表单中删除了MapContainer,那么B表单将在设备上按预期工作。
修改
令人惊讶的是,如果我通过汉堡包菜单从侧面菜单栏调用Form C,那么Form C上的按钮可以无缝地工作!
所以我觉得MapContainer给我带来了麻烦,我该怎样做才能使B Form按预期工作?
任何帮助表示赞赏,
此致
答案 0 :(得分:1)
MapContainer
是peer component,我们启用了Android上的新同伴,隐藏了对等系统的一些复杂性,但可能会引发其他问题。
这可能是对等组件系统的错误行为,尽管我很难理解如何重现这一点。侧边菜单可以工作,因为侧边菜单是一个完全不同的形式,没有地图容器。
答案 1 :(得分:0)
所以这是我找到的解决方法。
在显示表格B之前,我删除了MapContainer并重新验证了表格A:
googleMap.remove(); // googleMap is my MapContainer defined somewhere else
this.revalidate();
虽然它有效但我仍然不明白为什么问题中描述的问题会发生。