Как я могу создать всплывающее окно для пользовательского Choicefield и вызвать его? - PullRequest
0 голосов
/ 04 января 2012

Я создал свой собственный простой ChoiceField, расширив ObjectChoiceField .. Это как ..

public class MyChoiceField extends ObjectChoiceField 
{

    public MyChoiceField(String label ,Object[] choices) 
    {
        super(label, choices);
    }

    protected void layout(int width, int height) 
    {
        setMinimalWidth(width/2-62);
        super.layout(width, height);
    }

    public void paint(Graphics graphics)
    {
        super.paint(graphics);
    }    
}

Теперь я хочу отобразить свои варианты, когда я выбираю MyChoiceField в пользовательском меню.(не по умолчанию всплывающее окно, которое Blackberry предоставляет, когда пользователь нажимает на ChoiceField) ..

Как я могу этого добиться?Примеры кодов будут заметны .. Спасибо

1 Ответ

0 голосов
/ 04 января 2012

Попробуйте переопределить метод fieldChangeNotify(int context) из ObjectChoiceField следующим образом:

public class MyChoiceField extends ObjectChoiceField 
{

    public MyChoiceField(String label ,Object[] choices) 
    {
        super(label, choices);
    }

    protected void layout(int width, int height) 
    {
        setMinimalWidth(width/2-62);
        super.layout(width, height);
    }

    protected void fieldChangeNotify(int context) {

        int index = getSelectedIndex();

        try{
            VerticalFieldManager vfm = new VerticalFieldManager();

            vfm.add(new LabelField("[Pop Up Content]\nChoice Field Changed #\n"+choices[index]+" selected."));

            PopupScreen popUpScreen = new PopupScreen(vfm){
                public boolean onClose()
                {
                    this.close();
                    return true;
                }
            };

            UiApplication.getUiApplication().pushScreen(popUpScreen);

        } catch(Exception exc) {
            System.out.println("Exception in choiceField fieldChangeNotify");
        }
    }

    public void paint(Graphics graphics)
    {
        super.paint(graphics);
    }
}

Используйте MyChoiceField теперь примерно так:

String[] choices; // Keep This Global
VerticalFieldManager vfm = new VerticalFieldManager(Manager.FIELD_VCENTER);            
choices = new String[2];
choices[0] = new String("Choice1");
choices[1] = new String("Choice2");
vfm.add(new MyChoiceField("Choise", choices));

Дайте мне знать, работает ли это решение.

...