应用程序正在运行,用户正在进行一些TextField
编辑。然后收到一个电话,MIDlet
进入paused
状态。对话完成后,重新启动应用程序,调用startApp()
的{{1}}方法,并显示应用程序的MIDlet
main
!
那么如何解除这个默认行为,以便保留上次打开Form
并进行所有修改?
答案 0 :(得分:1)
我在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();
}
我认为这种使用HashTable
的方法即使对于任何lcdui
表格也适用。
答案 1 :(得分:1)
在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.
}
}