Хорошо, позвольте мне рассказать вам, как я это сделаю, и, надеюсь, где-то наступит момент ага.
import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.Keypad;
// any other imports you might need
public final class VivartClass implements KeyListener {
public boolean keyChar(char key, int status, int time)
{
System.out.println("inside keychar");
if(key== 'o'||key== 'O')
{
int zoom=mapField.mf.getZoom();
zoom=zoom-3;
mapField.mf.setZoom(zoom);
super.mf.setZoom(zoom);
return true;
}
return super.keyChar(key, status, time);
}
protected boolean keyDown(int keycode, int time) {
int key=Keypad.key(keycode);
String keyC=Integer.toString(key);
System.out.println("********************************* key pressed"+key);
System.out.println("********************************* key pressed to string"+keyC);
return super.keyDown(keycode, time);
}
}
Тогда в конструкторе вашего приложения
public Application() {
addKeyListener(new VivartClass());
// all your other stuff you may want to do
}
«приложения должны использовать уведомление keyChar для определения того, какие символы были нажаты пользователем» - это рекомендация www.blackberry.com в их API.
Также убедитесь, что в других местах нет других методов keyChar.в вашем коде.Если есть, то этот, который вы ожидаете вызвать, не будет вызван.
Также вместо ключа == 'o' попробуйте использовать некоторые значения из net.rim.device.api.system. Персонажи, чтобы увидеть, есть ли какие-нибудь ключи, которые вы можете получить, например
key == Characters.LATIN_SMALL_LETTER_O
О, последняя попытка.Вы можете увидеть, улучшит ли
Keypad.getAltedChar(key) == 'o'
и вашу ситуацию.
Извините, у меня нет ни симулятора, ни устройства передо мной, поэтому я не могу запустить их с вами, нонадеюсь, я столкнулся с проблемой с одним из них.