Можно ли повторно показать последнюю открытую форму, когда мидлет был приостановлен? - PullRequest
1 голос
/ 20 декабря 2011

Приложение работает, пользователь делает TextField редактирование. Затем принимается вызов, поэтому MIDlet входит в состояние paused. Когда разговор заканчивается, приложение перезапускается, вызывается метод startApp() для MIDlet и отображается main Form приложения!

Так как отклонить это поведение по умолчанию, чтобы сохранить последнее открытое Form со всеми изменениями?

Ответы [ 2 ]

1 голос
/ 05 января 2012

В 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.
    }
}
1 голос
/ 20 декабря 2011

Я создал 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 формы.

...