当MIDlet暂停时,是否可以重新显示最后打开的表格?

时间:2011-12-20 07:07:50

标签: java-me lwuit midp midlet lwuit-form

应用程序正在运行,用户正在进行一些TextField编辑。然后收到一个电话,MIDlet进入paused状态。对话完成后,重新启动应用程序,调用startApp()的{​​{1}}方法,并显示应用程序的MIDlet main

那么如何解除这个默认行为,以便保留上次打开Form并进行所有修改?

2 个答案:

答案 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.
    }
}