Как создать собственный диалог - PullRequest
1 голос
/ 07 марта 2011

Мне нужно создать диалог подтверждения да / нет на иностранном языке.Я думаю, что мне нужно создать свой собственный класс путем расширения Dialog?

Спасибо

1 Ответ

5 голосов
/ 08 марта 2011

это должно сработать.Приношу свои извинения любым шведским поварам.

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 после того, как экран будетru выскочил из стека дисплея.

Например

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

Приветствия

Луч

...