Я положил hfm и поле кнопки в нем, setChangeListener для кнопки работает только тогда, когда фокус на buttonField / hfm в blackberry - PullRequest
1 голос
/ 23 января 2012

После загрузки экрана Если я нажимаю на кнопку напрямую, событие setChangeListener не вызывается, скорее, когда фокус меняется на button / hfm, вызывается событие setChangeListener и также получается желаемый результат.

В чем может быть причина, и, пожалуйста, помогите мне решить эту проблему ...

HorizontalFieldManager hfm = new HorizontalFieldManager(); 
ButtonField buttonF = new ButtonField(ButtonField.CONSUME_CLICK); 
buttonF.setLabel("View Key");
FieldChangeListener listeneronClick = new FieldChangeListener() 
{ 
 public void fieldChanged(Field field, int context) 
  { 
   System.out.println("in fieldchange");
     ButtonField buttononClick = (ButtonField) field; 
    buttononClick.setLabel("Hide Key");
     }  
   };  
  hfm.add(buttonF); 
  buttonF.setChangeListener(listeneronClick);

Заранее спасибо.

Ответы [ 3 ]

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

Ваш FieldChangeListener не будет ничего делать, потому что он создает новую кнопку и не добавляет ее на экран. Я предполагаю, что вы просто хотите изменить текст на существующей кнопке, поэтому попробуйте следующий код:

HorizontalFieldManager hfm = new HorizontalFieldManager(); 
final ButtonField buttonF = new ButtonField(ButtonField.CONSUME_CLICK); 
buttonF.setLabel("View Key");

FieldChangeListener listeneronClick = new FieldChangeListener(){ 

    public void fieldChanged(Field field, int context) 
    { 
        System.out.println("in fieldchange");
        buttonF.setLabel("Hide Key");
    }  
};  

hfm.add(buttonF); 
buttonF.setChangeListener(listeneronClick);
0 голосов
/ 24 января 2012

попробуйте позвонить hfm.setFocus() перед добавлением hfm в диспетчер экрана.

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

Попробуйте создать свою кнопку, как показано ниже

ButtonField button = new ButtonField("Ok", ButtonField.CONSUME_CLICK);

ButtonField.CONSUME_CLICK Указывает, что кнопка потребляет событие нажатия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...