根据documentation,如果当前可显示的是警报,则Display.setCurrent
不起作用。这是一个问题,因为我想在用户选择命令时弹出另一个警报。有谁知道如何解决这个问题,以便我们可以从一个警报转到另一个警报?我使用的是CLDC 1.0和MIDP 2.0。
其他信息
该规范确实允许我们在屏幕上编辑警报,但有些诺基亚手机根本无法处理它。所以我现在正试图从警报转到空白画布,然后回到警报。当然我不希望用户与之前的画布进行交互,所以似乎我不得不创建一个新的空白画布。作为一个旁注,这有一个轻微的缺点,即在显示警报时仍然具有前一个屏幕的手机上看起来更糟。
更大的问题是如何在加载画布后从空白画布转换回警报。在摩托罗拉模拟器上进行的测试显示,从警报返回到上一个屏幕后,不会调用showNotify。我想我可以在paint方法中创建下一个警告,但这看起来像是一个丑陋的黑客。
答案 0 :(得分:1)
好的,所以你的问题是无法将其设置为:
Display.setCurrent(alert1, alert2);
和
Display.setCurrent(alert2);
如果当前的Displayable已经是 alert1 ,则也可以 。
那么如何将一个空白的中间可显示项目立即更改为下一个警报呢?假设当前的Displayable是 alert1 ,就像在 alert1 的命令块中一样:
Display.setCurrent(blankForm);
Display.setCurrent(alert2);
假设您没有使用默认的“Dismiss”命令,那应该可行。所以基本上它来自 alert1 - >( blankForm - > alert2 )。
答案 1 :(得分:0)
我无法找到解决方法,所以我只是使用了油漆黑客。
public class AlertPage extends Canvas{
MIDlet midlet;
Alert alert;
private AlertPage(MIDlet midlet){
this.midlet=midlet;
}
protected void paint(Graphics arg0){
//Yep, this is a hack, but showNotify doesn't seem to work well for Motorola
if(alert!=null){
Display d=Display.getDisplay(midlet);
d.setCurrent(alert);
alert=null;
}
}
public static void showAlert(MIDlet m, Alert a){
AlertPage page=new AlertPage(m);
Display d=Display.getDisplay(m);
page.alert=a;
d.setCurrent(page);
}
}