MIDlet 暂停时是否可以重新显示上次打开的表单?

发布于 2024-12-22 13:13:38 字数 288 浏览 5 评论 0原文

应用程序正在运行,用户正在进行一些 TextField 编辑。然后收到呼叫,因此MIDlet 进入暂停 状态。对话完成后,应用程序将重新启动,调用 MIDletstartApp() 方法,并调用 main Form<显示应用程序的 /code> !

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

The application is running , the user is making some TextField editing. Then a call is received , so the MIDlet enters the paused state. When the conversation is finished then the application is restarted , the startApp() method of the MIDlet is called and the main Form of the application is shown !

So how to dismiss this default behaviour so that the last opened Form with all the modifications are kept ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风来 2024-12-29 13:13:38

我在 MIDlet 类中创建了一个 static Form

public static Form lastForm = null;

然后我将其设置为我的项目每个表单中的实际表单 code> :

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 表单。

I created a static Form in the MIDlet class :

public static Form lastForm = null;

Then I set it to the actual Form in every Form of my project :

if (!myMidlet.lastCanvas.isEmpty())
    myMidlet.lastCanvas.clear();    
myMidlet.lastForm = this;

Then in the startApp() I wrote :

public void startApp() {
        ...
        if (lastForm != null)
            lastForm.showBack();
        else
        {
            new MainForm(this).show();
        }
    }

EDIT :

For the canvas :

In the MIDlet class :

public static Hashtable lastCanvas = new Hashtable();

In the canvas class ( constructor ) :

if (myMidlet.lastForm != null)
    myMidlet.lastForm = null;

if (!myMidlet.lastCanvas.isEmpty())
    myMidlet.lastCanvas.clear();

myMidlet.lastCanvas.put(new String("Form"), this);

And in the 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();
    }

I think this approach of using a HashTable will work even for any lcdui Form.

长亭外,古道边 2024-12-29 13:13:38

在 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.
    }
}

In LWUIT, I use this

import com.sun.lwuit.Display;
......
......
......

public void startApp() {
    if (Display.isInitialized()) {
        if (Display.getInstance().isMinimized()) {
            Display.getInstance().getCurrent().showBack();
        }
    } else {
        //your normal initialization code.
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文