为什么我不能选择侧边菜单中的第一项?

时间:2016-05-28 03:29:23

标签: codenameone

我有一个非常简单的项目,只有一个表单和五个命令。我将每个命令都放在侧面菜单和溢出菜单上。它们都可以在溢出菜单上正常工作,但在侧面菜单上,第一个从不起作用。其他四个工作正常,但第一个命令失败。通常,当我触摸它时,没有任何反应。偶尔它会被选中,并保持选中状态,直到我点击另一个。但命令永远不会被执行。难道我做错了什么?或者这是一个错误吗?

它在模拟器上运行良好。它在使用4G LTE的Android Moto E(第2代)上失败,运行Android 5.1。我还没有在任何其他手机或平板电脑上运行它。

import com.codename1.ui.*;
import com.codename1.ui.events.ActionEvent;
import com.codename1.ui.layouts.BoxLayout;
import com.codename1.ui.plaf.UIManager;

@SuppressWarnings("HardCodedStringLiteral")
public class Playground {

  private Form current;
  private MainForm mainForm;
  public void init(Object context) {
    UIManager.initFirstTheme("/theme");
  }

  public void start() {
    if (current != null) {
      current.show();
      return;
    }

    Toolbar.setGlobalToolbar(true);
    mainForm = new MainForm();
    Form hi = mainForm;
    hi.show();
    current = hi;
  }

  public void stop() {
  }

  public void destroy() {
  }

  private class MainForm extends Form {
    MainForm() {
      super("Test of Hamburger Menu");
      Display.getInstance().setCommandBehavior(Display.COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT);
      setLayout(new BoxLayout(BoxLayout.Y_AXIS));

      Toolbar toolbar = new Toolbar();
      setToolbar(toolbar);

      Command dummyOne = new PlaygroundCommand("One");
      Command dummyTwo = new PlaygroundCommand("Two");
      Command dummyThree = new PlaygroundCommand("Three");
      Command dummyFour = new PlaygroundCommand("Four");
      Command dummyFive = new PlaygroundCommand("Five");

      toolbar.addCommandToSideMenu(dummyOne);
      toolbar.addCommandToSideMenu(dummyTwo);
      toolbar.addCommandToSideMenu(dummyThree);
      toolbar.addCommandToSideMenu(dummyFour);
      toolbar.addCommandToSideMenu(dummyFive);
      toolbar.addCommandToOverflowMenu(dummyOne);
      toolbar.addCommandToOverflowMenu(dummyTwo);
      toolbar.addCommandToOverflowMenu(dummyThree);
      toolbar.addCommandToOverflowMenu(dummyFour);
      toolbar.addCommandToOverflowMenu(dummyFive);
    }
  }

  private void doCommand(ActionEvent evt) {
    Dialog.show("Command", evt.getCommand().toString(), Dialog.TYPE_INFO, null, "OK", null);
  }

  private class PlaygroundCommand extends Command {
    PlaygroundCommand(String name) {
      super(name);
    }

    @Override
    public void actionPerformed(final ActionEvent evt) {
      doCommand(evt);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

不要这样做:

Display.getInstance().setCommandBehavior(Display.COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT);

我们通常在start而不是init方法中初始化表单,因为它更像是应用程序流而不是实际初始化。所以这两件事中的一件可能会导致这种奇怪的行为。