1

应用程序正在运行,用户正在进行一些TextField编辑。然后接到电话,MIDlet进入paused状态。对话结束后,应用程序重新启动,调用的startApp()方法并显示应用程序的 !MIDletmain Form

那么如何消除这种默认行为,以便Form保留最后打开的所有修改?

4

2 回答 2

1

static FormMIDlet课堂上创建了一个:

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形式。

于 2011-12-20T08:06:53.263 回答
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.
    }
}
于 2012-01-05T02:29:30.733 回答