How to set onBackButton listener to an activity

2019-01-25 11:53发布

问题:

I have a Class A which runs activity via startActivityForResult by passing Intent to it. In other class, lets say B I get this Intent and recreate activity by it. How can I listen events for that activity, e.g. activity which was started for result is running and user pressed "back" button so I want to do some action. How can I do this? Thank you on advance.

Activity in which i recreate instance of object is not derived from Activity class. It is just ACTIVITY. So I have only object. is there any way to do such stuff with instance of class but not a class?

回答1:

You should override the method : onBackPressed() of the Activity class.



回答2:

In the activity, where you want to act on "back" button, simply override onKeyDown (or onKeyUp) method:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //do whatever you need for the hardware 'back' button
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

Keep in mind that if you want the "back" key to still end your activity, then you'll need to include

setResult(result);    //if you want to pass a result to activity A
finish();

somewhere in that conditional before return true;



回答3:

You can override onDestroy and put the code there.

Another possibility (and may fit your needs better) is to override onBackPressed.