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

时间:2017-01-17 11:10:00

标签: android codenameone

在我的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按预期工作?

任何帮助表示赞赏,

此致

2 个答案:

答案 0 :(得分:1)

MapContainerpeer component,我们启用了Android上的新同伴,隐藏了对等系统的一些复杂性,但可能会引发其他问题。

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

答案 1 :(得分:0)

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

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

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

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