2010-03-30 66 views
0

根據documentation,如果當前可顯示的是警報,則Display.setCurrent不起作用。這是一個問題,因爲我想在用戶選擇一個命令時彈出另一個警報。有誰知道如何解決這個問題,以便我們可以從一個警報轉到另一個警報?我正在使用CLDC 1.0和MIDP 2.0。Java ME中的多個連續警報

其他信息

該規範確實使我們能夠同時在屏幕上編輯的警報,但一些諾基亞手機完全不應付自如。所以我現在試圖從警報轉到空白畫布,然後回到警報。當然,我不希望用戶與前一個畫布進行交互,因此我似乎不得不創建一個新的空白畫布。作爲旁註,當顯示警報時,這具有在仍然具有前一屏幕的手機上顯得更糟的輕微缺點。

更大的問題是如何在畫布加載後從空白畫布切換回警報。在摩托羅拉模擬器上測試顯示,從警報返回到前一個屏幕後,不會調用showNotify。我想我可以在paint方法中創建下一個警報,但這看起來像一個醜陋的黑客。

+0

這不是很清楚。你可能想在這裏發佈一些代碼。您的提醒是否需要用戶解僱或他們超時?爲什麼你使用畫布作爲背景而不是列表或表單?... – 2010-03-30 12:18:13

+0

@快速:我的提醒被用戶解僱。我使用空白畫布作爲重定向用戶的位置,然後彈出另一個警報。 – Casebash 2010-03-31 22:12:00

+0

您是否說您的應用程序沒有要顯示警報之外的信息?它的目的是什麼? – 2010-04-01 17:37:51

回答

0

我找不到解決辦法,所以我只用了油漆黑客。

public class AlertPage extends Canvas{ 
    MIDlet midlet; 
    Alert alert; 

    private AlertPage(MIDlet midlet){ 
     this.midlet=midlet; 
    } 

    protected void paint(Graphics arg0){ 
     //Yep, this is a hack, but showNotify doesn't seem to work well for Motorola 
     if(alert!=null){ 
      Display d=Display.getDisplay(midlet); 
      d.setCurrent(alert); 
      alert=null; 
     } 
    } 

    public static void showAlert(MIDlet m, Alert a){ 
     AlertPage page=new AlertPage(m); 
     Display d=Display.getDisplay(m); 
     page.alert=a; 
     d.setCurrent(page); 
    } 
} 
1

OK,所以你的問題是,你不能設置它做的事:

Display.setCurrent(alert1, alert2); 

Display.setCurrent(alert2); 

可能的,如果當前可顯示已alert1

那麼如何把一個空白的中間顯示項目,並立即改變到下一個警報?假設當前可顯示爲alert1的,像這樣在你的報警1的命令塊:

Display.setCurrent(blankForm); 
Display.setCurrent(alert2); 

應工作假設你不使用默認的‘取消’命令。所以基本上它從alert1 - >(blankForm - >alert2)。

+0

我已經提出過這個建議,但是你更詳細地介紹了它,所以+1 – Casebash 2010-04-05 00:51:39