2010-09-01 78 views
21

我正在编写一个应用程序,它将有两个活动,当用户在第二个活动上按下后退按钮时,会弹出一个对话框,要求用户确认该操作。那么我怎么拦截这个?我真的怀疑这个因为后台是操作系统本身的一部分。有没有人找到解决方法?拦截后退按钮

+0

认真对待这样做。这是非标准的Android行为,可能会惹恼您的用户。您是否试图避免丢失未保存的数据? – I82Much 2010-09-01 04:01:04

+0

是的@ @ 82Much! – 2010-09-01 04:23:54

回答

50

在一个活动,你可以只覆盖

onBackPressed()

编辑:这是API LVL 5+:/ 4和下面你得重写的onkeydown()

+0

不错,谢谢@schwiz – 2010-09-01 04:21:16

10

只需重写活动中的onKeyDown方法并查找后退按钮即可。返回true以便事件被消耗。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do something here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

+1,我以前做过这件事,它绝对有效,虽然当我使用它时,它是在我理解多个活动的概念之前... – 2010-09-01 03:57:52

+0

//在这里做点什么(我正在尝试为我测试代码) 不适合我。而当我按下后退按钮什么也没有发生。 – 2010-09-01 04:08:07

+0

我的错误,我没有叫Toast.show()。 工作代码。 Thanx @skorulis – 2010-09-01 04:16:52

3

正如schwiz指出的那样,您需要覆盖活动类中的onBackPressed()方法(http://developer.android.com/reference/android/app/Activity.html#onBackPressed())。

我只是想补充一点,如果你确实想在某个阶段有继续或访问标准的回退操作(比如后,显示一个对话框),那么您只需拨打super.onBackPressed()ActivityName.super.onBackPressed()从活动的任何地方。