Skocz do zawartości
Zeely

[?] Opisywanie klawiszy systemowych

    Rekomendowane odpowiedzi

    Zeely

    W jaki sposób opisuje się klawisze systemowe? Przede wszystkim interesuje mnie klawisz back.

    Często w aplikacjach widzimy komunikat po kliknięciu klawisza cofania w stylu "Aby zamknąć kliknij ponownie back" i chciałbym coś takiego wprowadzić do swojej aplikacji, jednak nie mogę dojść w jaki sposób odwołać się do tego konkretnego klawisza.

    Coś w stylu BACK.onClick...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    onResume, onPause, onBack.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Jazotu

    Przeciążyć metodę onBackPressed() w aktywności

    public void onBackPressed(){
        // do something here and don't write super.onBackPressed()
    }
    

    jeśli to nie jest aktywność możesz w taki sposób przechwycić ewent wciśnięcia Back Button

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
       switch(keyCode){
       case KeyEvent.KEYCODE_BACK:
           // do something here 
           return true;
       }
       return super.onKeyDown(keyCode, event);
    }

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    pavloasto

    Dokładnie jak kolega wyżej podał.

    Jezeli chcesz zrobić akcję po np. dwukrotnym clicku "back", wystarczy zrobić jakiś licznik, i za drugim razem wywołać super.onBackPressed()

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    W Activity:

    long lastBackPressed=0;
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        	if(System.currentTimeMillis()-lastBackPressed<2000)
       			finish();
       		else{
       			Toast.makeText(this, R.string.exit_toast, Toast.LENGTH_SHORT).show();
       			lastBackPressed = System.currentTimeMillis();
       		}
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    Jest ustawione 2000 ms, bo tyle "trwa" krótki Toast, długi 3500

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Zeely

    A jak bym chciał całkowicie wyłączyć klawisz back? Po prostu jak ktoś kliknie back by nie robił żadnej akcji to mogę tego jakoś dokonać?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    To poprostu dajesz

    @Override
    public void onBackPressed(){
    
    }
    

    Czyli pusta metoda na klawisz wstecz.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Zeely

    Ok dzięki ;) Wiem już wszystko co chciałem ;)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x