java CodenameOne浮动操作按钮绑定错误
我的CodenameOne应用程序有一个带有特殊尺寸限制的主/细节布局。 还有一个“加号”按钮,允许创建新项目
主要形式:
FloatingActionButton fab=FloatingActionButton.createFAB(FontImage.MATERIAL_ADD);
...
if(isTablet() && !isPortrait())
{
mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)(leftContainerRatio*100)),masterContainer)
.add( mainEditingContainer);
fab.bindFabToContainer(masterContainer); //error here
} else {
mainForm.add(masterContainer);
fab.bindFabToContainer(masterContainer);
}
运行时,我得到:
java.lang.IllegalArgumentException: Component is already contained in Container: Container[x=0 y=20 width=2048 height=1514 name=null, layout = TableLayout, scrollableX = false, scrollableY = false, components = [masterContainer, Container]]
at com.codename1.ui.Container.insertComponentAtImpl(Container.java:927)
at com.codename1.ui.Container.insertComponentAt(Container.java:918)
at com.codename1.ui.Container.addComponent(Container.java:840)
at com.codename1.ui.Container.encloseIn(Container.java:250)
at com.codename1.ui.layouts.LayeredLayout.encloseIn(LayeredLayout.java:1099)
at com.codename1.components.FloatingActionButton.bindFabToContainer(FloatingActionButton.java:314)
at com.codename1.components.FloatingActionButton.bindFabToContainer(FloatingActionButton.java:286)
at com.myapp.app.MyApp.start(MyApp.java:186)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.codename1.impl.javase.Executor$3$1.run(Executor.java:258)
at com.codename1.ui.Display.processSerialCalls(Display.java:1331)
at com.codename1.ui.Display.mainEDTLoop(Display.java:1125)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
但是没有添加或绑定FAB的地方,代码片段中显示的地方除外
如果删除绑定方法,则不会显示任何按钮
(应用程序正在模拟器中运行)
有什么问题吗
# 1 楼答案
请看以下内容以了解发生了什么:How can I reposition the Floating Button in Codenameone?
其要点是,当在非表单容器上使用
FloatingActionButton
时,需要添加其结果。因为你给的容器现在已经包装好了所以你的代码应该是: