应用程序正在运行,用户正在进行一些TextField
编辑。然后接到电话,MIDlet
进入paused
状态。对话结束后,应用程序重新启动,调用的startApp()
方法并显示应用程序的 !MIDlet
main
Form
那么如何消除这种默认行为,以便Form
保留最后打开的所有修改?
应用程序正在运行,用户正在进行一些TextField
编辑。然后接到电话,MIDlet
进入paused
状态。对话结束后,应用程序重新启动,调用的startApp()
方法并显示应用程序的 !MIDlet
main
Form
那么如何消除这种默认行为,以便Form
保留最后打开的所有修改?
我static
Form
在MIDlet
课堂上创建了一个:
public static Form lastForm = null;
然后我将它设置为我的每个表单中的实际表单project
:
if (!myMidlet.lastCanvas.isEmpty())
myMidlet.lastCanvas.clear();
myMidlet.lastForm = this;
然后在startApp()
我写道:
public void startApp() {
...
if (lastForm != null)
lastForm.showBack();
else
{
new MainForm(this).show();
}
}
编辑 :
对于画布:
在MIDlet
课堂上:
public static Hashtable lastCanvas = new Hashtable();
在canvas
类(构造函数)中:
if (myMidlet.lastForm != null)
myMidlet.lastForm = null;
if (!myMidlet.lastCanvas.isEmpty())
myMidlet.lastCanvas.clear();
myMidlet.lastCanvas.put(new String("Form"), this);
并且在startApp()
:
public void startApp() {
VKBImplementationFactory.init();
Display.init(this);
if (lastForm != null)
lastForm.showBack();
else if (!lastCanvas.isEmpty())
{
javax.microedition.lcdui.Display.getDisplay(this).setCurrent((Canvas)lastCanvas.get(new String("Form")));
}
else
new MainForm(this).show();
}
我认为这种使用 a 的方法HashTable
甚至适用于任何lcdui
形式。
在 LWUIT 中,我使用这个
import com.sun.lwuit.Display;
......
......
......
public void startApp() {
if (Display.isInitialized()) {
if (Display.getInstance().isMinimized()) {
Display.getInstance().getCurrent().showBack();
}
} else {
//your normal initialization code.
}
}