アプリケーションが実行中で、ユーザーがTextField
編集を行っています。その後、電話がかかってくるので、MIDlet
は状態に入りpaused
ます。会話が終了すると、アプリケーションが再起動され、 のstartApp()
メソッドMIDlet
が呼び出されmain
Form
、アプリケーションの が表示されます。
では、このデフォルトの動作を無効にして、最後に開いForm
たすべての変更が保持されるようにするにはどうすればよいでしょうか?
アプリケーションが実行中で、ユーザーがTextField
編集を行っています。その後、電話がかかってくるので、MIDlet
は状態に入りpaused
ます。会話が終了すると、アプリケーションが再起動され、 のstartApp()
メソッドMIDlet
が呼び出されmain
Form
、アプリケーションの が表示されます。
では、このデフォルトの動作を無効にして、最後に開いForm
たすべての変更が保持されるようにするにはどうすればよいでしょうか?
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.
}
}
クラスで作成し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();
}
HashTable
a を使用するこのアプローチは、どのlcdui
フォームでも機能すると思います。