Я перенес свой мидлет в Blackberry и не могу назначить слушателя на клавишу ESCAPE - PullRequest
3 голосов
/ 28 февраля 2012

Вот код из моего мидлета:

метод addKeyListener выдает ошибку, поскольку функция не распознается.

import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.Keypad;

public class PhraZApp extends javax.microedition.midlet.MIDlet implements ActionListener{

public PhraZApp {
 addKeyListener (new KeyPadListener());
}


 protected void keyPressed(int key) {
    System.out.println(key);
}

public void actionPerformed(ActionEvent evt) {
    System.out.println(evt.getKeyEvent());
}

 public final class KeyPadListener implements KeyListener {

    public boolean keyChar(char key, int status, int time) {

        return false;
    }

    public boolean keyDown(int keycode, int time) {
        if (Keypad.KEY_ESCAPE == Keypad.key(keycode)) {
                  System.out.println("key: " + keycode);
        return true;
    }
            //let the system to pass the event to another listener.
    return false;
    }

    public boolean keyUp(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean keyRepeat(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean keyStatus(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

Действие keyPressed не слышно ни одному из этих слушателей.

Мне сказали добавить список ключей в компонент GUI, но ни один, с которым я пробую это, не принимает его. Кроме того, одна из возможных проблем заключается в том, что метод addKeyListener не объявлен, но в этом случае я не знаю, как его объявить.

Если я изменяю , расширяет javax.microedition.midlet.MIDlet до , расширяет UiApplication , addKeyListener становится принятым, но весь мидлет попадает в исключение RuntimeErrorException.

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

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

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Вам необходимо создать LWUIT Command и назначить его родительской форме, используя метод setBackCommand.Вы можете обрабатывать событие команды так же, как и любую другую команду в LWUIT.Например, через прослушиватель команд или даже просто подклассифицировать его и переопределить actionPerformed(ActionEvent).

1 голос
/ 01 марта 2012

Благодаря Шай указал мне правильное направление , я решил это.

Вот как я это сделал.

Command backCommand = new Command("",Keypad.KEY_ESCAPE);
form.setBackCommand(backCommand);

затем

 public void actionPerformed(ActionEvent evt) {

    if (evt.getCommand().getId() ==Keypad.KEY_ESCAPE){
        //execution code  
    }

Я не пробовал, но если бы я включил текст в команду, я думаю, что он будет выглядеть так, когда я нажимаю кнопку меню.Важно то, что я наконец получил мидлет, чтобы выслушать кнопку выхода после МНОГИХ часов попыток и поиска решений.

...