如何为活动设置onBackButton监听器

10
我有一个A类,通过将Intent传递给它来运行活动,使用startActivityForResult。在另一个类B中,我获取这个Intent并通过它重新创建活动。如何监听该活动的事件,例如,为结果启动的活动正在运行,用户按下“返回”按钮,因此我想执行某些操作。我该怎么做? 提前感谢您的帮助。
我重新创建对象实例的活动不是从Activity类派生的。它只是一个活动。那么,除了类之外,是否有任何方法可以使用类的实例来完成此类任务?
3个回答

22

4

在需要处理"返回"按钮的活动中,只需重写onKeyDown(或onKeyUp)方法:

@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);
}

请记住,如果您希望“返回”键仍然结束您的活动,则需要包含以下内容:

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

在那个条件语句中,在return true;之前的某个地方。


1

你可以重写onDestroy并将代码放在其中。

另一种可能性(可能更适合您的需求)是重写onBackPressed


2
如果Activity因为内存不足等原因被销毁,那么系统会调用这个方法,不是吗?我不确定这是否符合OP的要求。 - Aleks G
你说得有道理,虽然我认为通常最好遵循活动生命周期而不是绑定键。 - MByD
那得看需求是什么。在我的一个应用中,我有一个活动,其视图根据用户操作而改变。当按下“返回”键时,我要么恢复原始状态(如果我处于更改后的状态),要么完成该活动。在这种情况下,生命周期并不能帮助我。 - Aleks G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接