1

アプリケーションが実行中で、ユーザーがTextField編集を行っています。その後、電話がかかってくるので、MIDletは状態に入りpausedます。会話が終了すると、アプリケーションが再起動され、 のstartApp()メソッドMIDletが呼び出されmain Form、アプリケーションの が表示されます。

では、このデフォルトの動作を無効にして、最後に開いFormたすべての変更が保持されるようにするにはどうすればよいでしょうか?

4

2 に答える 2

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 に答える
1

クラスで作成しstatic Formました:MIDlet

public static Form lastForm = null;

次に、 my のすべての Form で実際の Form に設定します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();
    }

HashTablea を使用するこのアプローチは、どのlcduiフォームでも機能すると思います。

于 2011-12-20T08:06:53.263 に答える