Wenn Sie Hardware-Back-Key-Ereignis behandeln wollen, dann müssen Sie folgenden Code in Ihrer onActivityCreated()-Methode von Fragment tun.
Sie müssen auch das Ereignis Action_Down oder Action_UP überprüfen. Wenn Sie dies nicht tun, wird die Methode onKey() 2 Mal aufgerufen.
Auch, wenn Ihr rootview (getView()) wird nicht enthalten Fokus dann wird es nicht funktionieren. Wenn Sie auf ein beliebiges Steuerelement geklickt haben, müssen Sie dem Rootview mit getView().requestFocus() den Fokus geben; danach wird nur noch onKeydown() aufgerufen.
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(getActivity(), "Back Pressed", Toast.LENGTH_SHORT).show();
return true;
}
}
return false;
}
});
Für mich funktioniert das sehr gut.