Domanda

Sto cercando di individuare e sostituire il tasto Canc sulla tastiera di Blackberry.

Per qualche ragione, non è mai lo rende dentro il mio caso economico come quando colpisce quel punto:

Keypad.key(keycode) == 8
Keypad.KEY_DELETE == 127

Qual è il mio errore?

public class MyField extends ListField implements KeyListener {
// ...
/** Implementation of KeyListener.keyDown */
public boolean keyDown(int keycode, int time) {
    boolean retval = false;
    switch (Keypad.key(keycode)) {
    /* DELETE - Delete the timer */
    case Keypad.KEY_DELETE:
        if (Keypad.status(keycode) == KeyListener.STATUS_SHIFT) {
            _myDeleteCmd.run();
            retval = true;
        }
        break;

    default:
        retval = super.keyDown(keycode, time);
    }
    return retval;
}
È stato utile?

Soluzione

E 'probabile che l'evento chiave è consumato da un'altra funzione KeyListener.keyDown prima che sia in grado di raggiungere questo campo. Si può facilmente verificare questo impostando un punto di rottura all'interno della vostra implementazione keyDown () per fare in modo che l'applicazione raggiunge questo punto.

Per consumare un evento chiave in funzione KeyListener ha solo bisogno di restituire true. Assicurarsi che non si restituisce true per impostazione predefinita per tutte le altre implementazioni keyDown per garantire che ogni implementazione consuma solo le chiavi che utilizza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top