You’re not quite on the right track; what you should be doing is overriding onKeyDown()
and listening for the back key, then overriding the default behavior:
@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);
}
If you’re only supporting Android 2.0 and higher, they’ve added an onBackPressed()
you can use instead:
@Override
public void onBackPressed() {
// do something on back.
return;
}
This answer is essentially ripped from this blog post. Read it if you need long presses, compatibility support, support for virtual hard keys, or raw solutions like onPreIme()
etc.