我有一个非常简单的项目,只有一个表单和五个命令。我将每个命令都放在侧面菜单和溢出菜单上。它们都可以在溢出菜单上正常工作,但在侧面菜单上,第一个从不起作用。其他四个工作正常,但第一个命令失败。通常,当我触摸它时,没有任何反应。偶尔它会被选中,并保持选中状态,直到我点击另一个。但命令永远不会被执行。难道我做错了什么?或者这是一个错误吗?
它在模拟器上运行良好。它在使用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);
}
}
}
答案 0 :(得分:0)
不要这样做:
Display.getInstance().setCommandBehavior(Display.COMMAND_BEHAVIOR_BUTTON_BAR_TITLE_RIGHT);
我们通常在start
而不是init
方法中初始化表单,因为它更像是应用程序流而不是实际初始化。所以这两件事中的一件可能会导致这种奇怪的行为。