2011-12-20 39 views
1

應用程序正在運行,用戶正在編輯一些TextField。然後收到一個呼叫,所以MIDlet進入paused狀態。當通話結束後,應用程序重新啓動,MIDletstartApp()方法被調用,並且應用程序的mainForm被顯示!當MIDlet暫停時,是否可以重新顯示上次打開的窗體?

那麼如何解除這種默認行爲,以便最後打開Form並保留所有修改?

public static Form lastForm = null; 

然後我將它設置爲實際的形式在我project的各種形式:

+0

顯示當前表格中的pauseApp() – Lucifer 2011-12-20 07:30:25

+0

這並不工作:我在MIDlet創建一個'公共靜態com.sun.lwuit.Form lastForm = NULL ;'並且在一個Form的構造函數中:'myMidlet.lastForm = this;'。然後在'pauseApp()'我的代碼中:'lastForm.showBack();'但總是顯示主窗體!最後一張表格僅顯示幾秒鐘,但主窗體隨即打開! – pheromix 2011-12-20 07:49:30

+0

你是用普通的lcdui形式而不是由lwuit提供的嗎? – gnat 2011-12-20 07:52:41

回答

1

我在MIDlet類創建的staticForm

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

+0

如果用可顯示替換窗體,它也會覆蓋畫布:'public static Displayable lastDisplayable = null; // ...' - 假設'showBack'和'show'方法適用於Displayable – gnat 2011-12-20 09:22:06

+0

不幸的是這些方法只與LWUIT有關。請參閱我的答案編輯畫布,也許'lcdui'表單也可以應用於新方法。 – pheromix 2011-12-20 10:37:34

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. 
    } 
} 
相關問題