Navigation 在代号为one的容器之间导航

Navigation 在代号为one的容器之间导航,navigation,containers,codenameone,Navigation,Containers,Codenameone,我有一个包含4个容器(选项卡)的主窗体。在第一个容器(MessagesContainer)上,我有多个按钮。单击多按钮时,我希望导航到另一个容器(DetailContainer)。我还希望在DetailContainer中可以使用按下的MultiButton中的信息 这是我的多按钮: MultiButton mb = new MultiButton(); mb.setTextLine1(messageContent); mb.setTextLine2(messageDate);

我有一个包含4个容器(选项卡)的主窗体。在第一个容器(MessagesContainer)上,我有多个按钮。单击多按钮时,我希望导航到另一个容器(DetailContainer)。我还希望在DetailContainer中可以使用按下的MultiButton中的信息

这是我的多按钮:

  MultiButton mb = new MultiButton();
  mb.setTextLine1(messageContent);
  mb.setTextLine2(messageDate);
  mb.setName(messageId + "--MB");
  mb.setCheckBox(true);
  mb.setIcon(img);

  Command navigateToDetail = new Command("Detail") {
     public void actionPerformed(ActionEvent ev) {
        System.out.println("Get here!");

       //showContainer("DetailContainer", null, null);

       Component detailContainer = findDetailContainer(f);
       reloadContainer(detailContainer);

  }
};

 mb.setCommand(navigateToDetail);
 findMessagesContainer(f).addComponent(mb);
我尝试过showContainer,f.show(),但它不起作用。我不明白为什么像导航这样愚蠢的事情在这里如此痛苦


如何显示DetailContainer并将单击的多按钮值发送到DetailContainer?

如果您只想切换到其他选项卡,请在选项卡组件上使用
setSelectedIndex()

但是,如果我正确理解了您的问题,您希望更深入地了解showContainer,但是,您需要使用
EmbeddedContainer
。通常,当使用
表单
导航时,功能非常简单,我们会替换整个UI。但是,当您想要使用选项卡导航时,我们无法知道您要替换哪个部分。因此,您需要使用一个
EmbeddedContainer
,并在其中引用通过GUI构建器创建的另一个容器(而不是表单)。然后,您可以调用showContainer(),并在
EmbeddedContainer
层次结构中为其提供一个组件,这样我们就有了一个“根”来找到正确的父级(假设有4个选项卡,您可以有4个
EmbeddedContainer
,所以我们需要知道是哪一个…)

您可以避免所有这一切,并使用
Container.replace()
,这实际上是我们内部所做的,但这样您就不会从GUI构建器获得“自动”导航


这不是一件小事,但我们花了大量的时间思考如何简化它,并且仍然提供相同的功能集,结果是空的。

我找到了一种方法,使用setSelectedIndex()然后使用属性值将按钮值传递到下一个容器。谢谢你的回答!他们不知道Container.replace()方法的例子吗在javadoc、博客和教程中有很多Container.replace的例子。你想完成什么?请注意,这个老问题与嵌入式容器有关,它是旧的/不推荐使用的GUI生成器的一个功能