Stworzyłem prostą grę na Androida opartą na próbce Lunar Lander i mam problem z obsługą kluczowych zdarzeń. Gdy aktywność się rozpocznie, jedynymi kluczami, do których wywoływane są funkcje onKeyDown lub onKeyUp, są klawisze dpad w górę/w dół/w lewo/w prawo. Przyciski menu, back i dpad_center nie wyzwalają metod onKey. Jednak po naciśnięciu jednego z przycisków dpt w górę/w dół/w lewo/w prawo naciśnięcie klawiszy menu, wstecz lub dpad_center uruchamia te metody. Nie dostaję żadnych błędów ani żadnego wskazania, co się dzieje.Funkcja onKeyDown nie zawsze jest wywoływana w aplikacji na Androida
Możliwe, że ostrość jest ustawiona nieprawidłowo - aktywność rozpoczyna się od przycisku na ekranie, więc może być w trybie ekranu dotykowego. Jeśli tak, to czy dotknięcie przycisku Wstecz nie powinno doprowadzić mnie do właściwego trybu ustawiania ostrości, abym mógł złapać to wydarzenie?
Używam emulatora z SDK-1.5r3. Nie byłem w stanie wypróbować tego na prawdziwym telefonie. Oto moja wersja onKeyDown.
public boolean onKeyDown(int keyCode, KeyEvent msg)
{
Log.d(TAG, "onKeyDown: " + keyCode);
return super.onKeyDown(keyCode, msg);
}
Dzięki
Matt
To było w widoku - ale podczas sprawdzania tego, zdałem sobie sprawę, że nie mam włączonego trybu setFocusableInTouchMode - dodając, że w rozwiązaniu problemu. –
Ah, spoko. Przykro mi, że przegapiłem faktyczny problem, ale cieszę się, że mogłem pomóc. – haseman
Próbowałem tego w fragmencie, ale widok onKeyDown() mojego widoku nigdy nie jest wywoływany, mimo że ustawiłem jego skupienie na true: 'searchView.setFocusable (true); searchView.setFocusableInTouchMode (true); '. Zdarzenie onKeyDown() wywoływane jest jednak, ale niestety dla klawisza powrotu. – faizal