我编程为J(2)ME应用程序(实际上一个MIDlet),其中比可用命令按钮多个命令被示出在屏幕上,我卡这种情况:如何捕捉隐式菜单'返回'命令?
映射到具体用户接口结构也可能取决于命令的总数。例如,如果应用程序询问 以获取比可以映射到设备上可用的物理按钮上的更多抽象命令,则该设备可以使用替代的人机界面,例如菜单。例如,不能映射到物理按钮上的抽象命令 被放置在菜单中,标签“菜单”被映射到其中一个可编程按钮上。
所以在这种情况下一个菜单是自动生成和“选择”和“返回”选择加入。 '返回'选择应该退出菜单并返回到前一个屏幕。这原则上工作,问题是我需要以某种方式捕捉它,并触发重绘,否则屏幕变为空白。
所以我的问题是:有没有办法赶上这种“隐性”(自动添加“返回”命令
示例代码,结果是:
public class HelloWorld extends MIDlet
{
private Form helloFrm;
private Display display;
public HelloWorld() {
Command command1 = new Command("Cmd 1", Command.SCREEN, 1);
Command command2 = new Command("Cmd 2", Command.SCREEN, 0);
Command command3 = new Command("Cmd 3", Command.SCREEN, 0);
Command command4 = new Command("Cmd 4", Command.SCREEN, 0);
helloFrm = new Form("Hello World");
helloFrm.addCommand(command1);
helloFrm.addCommand(command2);
helloFrm.addCommand(command3);
helloFrm.addCommand(command4);
}
public void startApp()
{
display = Display.getDisplay(this);
display.setCurrent(helloFrm);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
}
编辑添加更多详细信息:
根据我的评论,我将从窗体返回到我的应用中的画布,这就是屏幕消隐发生的位置。 我已经添加了自己的'返回'命令,这个工作正常,因为我可以很容易地使用CommandListener捕捉并相应地处理(触发重绘)。但是现在我有两个“返回”命令,隐式(空白)和我的。 所以问题的另一个版本是:我能否以某种方式防止添加隐含的“后退”命令?
当你说“我需要捕捉它并触发重绘,否则屏幕变空白”看起来你的真实应用程序是基于Canvas而不是Form。我对吗? –
你是对的。在我的真实应用程序中,我将通过“返回”从窗体返回到画布,这是当屏幕变为空白时。 – nofish
您是否检查sizeChanged或showNotify是否被调用? –