It's very strange. I had to add a revalidate() also after removing the containers.
I do not know if it is intended behaviour but this code works (see also below this code, there is the second part of this message about fab breaking it):
private void setContainers()
{
mainEditingContainer.remove();
itemListContainer.remove();
//fab.remove();
mainEditingContainer.revalidate();
itemListContainer.revalidate();
mainForm.revalidate();
if (isPortrait() && (other conditions))
{
new EditingForm(appData,myData,mainForm,editingContainer,other Parameters).show();
}
if (isPortrait() && !(other conditions))
{
//mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)(1*100)),fab.bindFabToContainer(itemListContainer));
mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)(1*100)),itemListContainer);
}
if(isTablet() && !isPortrait() ) {
/*mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int) (leftContainerRatio * 100)), fab.bindFabToContainer(itemListContainer))
.add(mainEditingContainer);*/
mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int) (leftContainerRatio * 100)), itemListContainer)
.add(mainEditingContainer);
}
}
mainEditingContainer.revalidate();
itemListContainer.revalidate();
mainForm.revalidate();
}
------
But now the fab problem is back. Indeed if I use this code
private void setContainers()
{
mainEditingContainer.remove();
itemListContainer.remove();
if (!fabFirstTime) fab.remove();
mainEditingContainer.revalidate();
itemListContainer.revalidate();
mainForm.revalidate();
if (isPortrait() && (conditions)
{
new EditingForm(appData,myData,mainForm,editingContainer,other parameters).show();
}
if (isPortrait() && !(conditions)
{
mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int)(1*100)),fab.bindFabToContainer(itemListContainer));
}
if(isTablet() && !isPortrait() ) {
mainForm.add(tl.createConstraint().heightPercentage(100).widthPercentage((int) (leftContainerRatio * 100)), fab.bindFabToContainer(itemListContainer)).add(mainEditingContainer);
}
mainEditingContainer.revalidate();
itemListContainer.revalidate();
mainForm.revalidate();
if (fabFirstTime) fabFirstTime=false;
}
the user interface is not reconstructed again and no button is visible.
If I do not remove the fab I get the error
Component is already contained in Container: Container[x=0 y=0 width=1136 height=1920 name=null, layout = FlowLayout, scrollableX = false, scrollableY = false, components = [FloatingActionButton]]
but I can see the button (in an wrong position because it is the old x position I think, indeed orientation change has occurred).
Thanks in advance