слушатели для поля ObjectChoice

Я создаю приложение BlackBerry, которое содержит два поля ObjectChoiceField. Я хочу добавить слушателей для каждого из них. Я искал это, но не нашел полезного кода.

Это похоже на селектор страны и штата на веб-сайтах. Я ищу простую логику, и мне не нужны какие-либо решения, ориентированные на базы данных. Может ли кто-нибудь описать, как добавить слушателей для этих двух ObjectChoiceField?

Я прикрепил свой код ниже, но он работает только для поля выбора страны. Когда я меняю выбор состояния, ничего не происходит.

public class MyApplication extends MainScreen implements FieldChangeListener
{
ObjectChouceField choice_c,choice_s;
public MyApplication ()
    {
        this.setTitle("hai");
choice_c = new MyChoiceField("Select a Country", countryArray);
        choice_c.setChangeListener(this);
        this.add(choice_c);
choice_s = new MyChoiceField("Select a State", stateArray);
        choice_s.setChangeListener(this);
        this.add(choice_s);
                ..................
                ..................
}
public void fieldChanged(Field field, int context) 
    {
        if(field == choice_category)
        {
            Dialog.alert("choice country has been pressed");
        }
        else if(field == choice_round)
        {
            Dialog.alert("choice state has been pressed");
        }
    }
}

person Dil Se...    schedule 30.11.2011    source источник
comment
Ваш код выглядит нормально, если нет других деталей, которые вы не опубликовали.   -  person Vit Khudenko    schedule 30.11.2011
comment
@arhimed: на самом деле это был код. после добавления этих choideFields я добавил одно поле редактирования и кнопку. k, я проверю это еще раз и проинформирую вас об этой ошибке, дорогая. В любом случае спасибо за ваш комментарий.   -  person Dil Se...    schedule 30.11.2011
comment
@BB Эксперт. На самом деле это было расширенное поле выбора.   -  person Dil Se...    schedule 30.11.2011
comment
@arhimed: ты прав, дорогой. Были некоторые проблемы с моей логикой. Спасибо дорогой. теперь все работает нормально.   -  person Dil Se...    schedule 01.12.2011


Ответы (2)


Вы пробовали переопределить метод navigationClick ObjectChoiceField?

Вот пример:

ObjectChoiceField selectionField = new ObjectChoiceField("Select the Country",countryArray)
{
    protected boolean navigationClick(int arg0, int arg1) 
    {
        return super.navigationClick(arg0, arg1);
    }
};
person Shadowtech    schedule 02.12.2011

cf - это ChoiceField. Используйте getSelectedIndex для соответствующего запуска событий.


cf.setChangeListener(new FieldChangeListener() {

            public void fieldChanged(Field field, int context) {
                // TODO Auto-generated method stub
                switch (cf.getSelectedIndex()) {
                case 0:
                    //code here //
                    break;
                default:
                    break;
                }
            }
        });
person Bhavik S    schedule 30.11.2011
comment
Так нужно ли мне добавлять fieldChanged для каждого добавляемого ChoiceField? есть ли возможность сгруппировать их в одну функцию? как мы это делаем в java. if (e.getSource == button1) {..} else if (e.getSource == button2) {...} - person Dil Se...; 30.11.2011
comment
вы можете просто создать общую функцию, например FieldChangeListener fc = new FieldChangeListner (), а затем назначить этого слушателя для всех полей выбора. - person Bhavik S; 30.11.2011
comment
Извини, бхавик. Я пытался, как ты ответил. Но при запуске он показал мне ошибку. Тип MyApplication должен реализовывать унаследованный абстрактный метод FieldChangeListener.fieldChanged (Field, int). И когда я попробовал быстрое исправление, предложенное eclipse, в конце добавляется еще одно общедоступное поле void fieldChanged (поле поля, int context). - person Dil Se...; 01.12.2011
comment
Вы будете выполнять свой код каждый раз, когда пользователь будет выбирать варианты - person danielrvt-sgb; 01.03.2013