2011-12-20 5 views
1

アプリケーションが実行中です。ユーザーは編集中のものを編集していますTextFieldその後、コールが受信されるので、MIDletpaused状態になります。会話が終了すると、アプリケーションが再起動され、MIDletstartApp()メソッドが呼び出され、アプリケーションのmainFormが表示されます。MIDletが一時停止されたときに最後に開いたフォームを再度表示することはできますか?

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

+0

表示は動作しませんPauseApp() – Lucifer

+0

の現在の形式を使用します。私はミッドレットで作成し 'のpublic static com.sun.lwuit.Form lastForm = nullを; 'フォームのコンストラクタで、私は' myMidlet.lastForm = this; 'を作成します。 'pauseApp()'では、 'lastForm.showBack();'と書いていますが、メインフォームは常に表示されます!最後のフォームはわずか数秒で表示されますが、メインフォームが次に開きます! – pheromix

+0

lwuitで提供されているものではなく、単純なlcdui形式でこれをテストしましたか? – gnat

答えて

1

私はMIDletクラスでstaticFormを作成:

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

EDIT:MIDletクラスにおいて

canvasクラス(コンストラクタ)で

public static Hashtable lastCanvas = new Hashtable(); 

キャンバス

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フォームのために働くだろうと思います。

+0

フォームをdisplayableに置き換えると、canvasも同様にカバーします: 'public static Displayable lastDisplayable = null; // ... '' showBack'と 'show'メソッドがDisplayable – gnat

+0

に適用されると仮定すると、残念ながらこれらのメソッドはLWUITにのみ関連しています。おそらく 'lcdui'フォームを新しいメソッドに適用することもできます。 – pheromix

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. 
    } 
} 
関連する問題