2011-03-07 188 views

回答

5

這應該是訣竅。我對任何瑞典廚師的觀望表示歉意。

int answer = Dialog.ask("Gersh gurndy morn-dee burn-dee, burn-dee, flip-flip-flip-flip-flip-flip-flip-flip-flip?", new String[] {"Hokey dokey","Bork bork bork"}, new int[] {Dialog.OK,Dialog.CANCEL}, Dialog.CANCEL); 

編輯:

The above explained better: 
public final static int NEGATIVE = 0; 
public final static int AFIRMATIVE = 1; 
public final static int DEFAULT = NEGATIVE; 
int answer = Dialog.ask("question?", new String[] {"afirmative button label", "negative button label"}, new int[] {AFIRMATIVE,NEGATIVE}, DEFAULT); 

正如你可以從上面可以改變在對話框中的所有文本(語言)值只是通過使用這種方法,所以你不應該需要一見自定義類以另一種語言創建對話框。

如果您使用標準的BB本地化方法,更簡單的方法(Dialog.ask(res.getString(SOMEQUESTION))會自動爲其設置的電話選項中的語言和負面按鈕進行調整,這會更簡單。只需要添加問題作爲一個字符串資源

你可以在這裏找到有效的方法和構造函數列表: http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/ui/component/Dialog.html

更多下面編輯:

我以爲我上面的答案是你是什麼之後但如果你確實需要進一步自定義對話框中的一個新的類,你可以做這樣的:

public class MyDialogScreen extends MainScreen implements LocalResource { 

    private int exitState; 

    ... 

    protected void sublayout(int width, int height) { 
     setExtent(dialogWidth, dialogHeight); 
     setPosition(XPOS, YPOS); 
     layoutDelegate(dialogWidth, dialogHeight); 
    } 

    // do some stuff and assign exitState appropriately 
    // e.g. a button that sets exitState = 1 then pops this screen 
    // another button that sets exitState = 2 then pops this screen 
    ... 

    public int getExitState() 
    { 
     return this.exitState; 
    } 

在上面我已經創建了一個新的屏幕,我已經覆蓋了sublayout方法來指定一個自定義的寬度,高度和XY位置layoutDelegate。當你按下這個屏幕時,你將會看到它是一個對話框,就像你指定的XY位置上一個屏幕上方的對話框。

確保使用pushModal。這將允許您在屏幕從顯示堆棧彈出後訪問getExitState方法。

E.g

MyDialogScreen dialog = new MyDialogScreen(); 
UiApplication.getUiApplication().pushModalScreen(dialog); 
int result = dialog.getExitState(); 

乾杯

相關問題