Pergunta

Estou tendo duas atividades A e B. Quando clico no botão em A que mostrará B. Quando clico no botão em B, ele é retomado para A. Eu defini o método de substituição de transição de substituição após o método FINAL (). Funciona corretamente. Mas, caso a atividade atual seja B. Naquela época, clique no botão de volta padrão no dispositivo. Ele mostra a transição direita para a esquerda para mostrar a atividade A.

Como posso ouvir essa chave de volta padrão no dispositivo?

EDITAR:

Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
Foi útil?

Solução

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

O link a seguir é uma explicação detalhada sobre como lidar com os eventos principais, escritos pelos próprios desenvolvedores do Android:

Usando a chave traseira

Outras dicas

Para o Android 2.0 e posterior, existe um método específico na classe de atividade:

@Override  
public void onBackPressed() {
    super.onBackPressed();   
    // Do extra stuff here
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
        //Do stuff
    }

    return super.onKeyDown(keyCode, event);
}

Mais informações sobre as principais coisas que podem ser encontradas aqui: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Eu uso esse código em uma atividade com um mídia. Eu precisava interromper a reprodução quando o usuário pressionou o botão Voltar, mas ainda posso voltar à atividade anterior.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        try{
            mp.stop(); //this line stops the player
            return super.onKeyDown(keyCode, event);//this line does the rest 
        }
        catch(IllegalStateException e){
            e.printStackTrace();
        }
        return true;
    }

    return super.onKeyDown(keyCode, event); //handles other keys
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top