覆盖默认手机后退按钮

时间:2014-04-08 16:17:15

标签: android eclipse button

是否可以覆盖我的默认电话"返回"按钮?我想在我的手机上结束应用程序后退按钮点击。我该怎么做?谢谢!

4 个答案:

答案 0 :(得分:1)

每个活动都有一个方法,基本上是你的android上的后退按钮。当然,这种方法可以覆盖"。

将此信息放入您的活动中:

@Override
public void onBackPressed() {
    //do whatever
}

要完成活动,请在上面覆盖的方法中写下:

finish();

要完成应用程序,请在上面重写的方法中写下:

android.os.Process.killProcess(android.os.Process.myPid());

编辑: 我假设你也希望它不会出现在你最近的应用程序中。 结合使用" android.os.process ..."我之前提到过,将它放在你的 root活动的activity标签中的android清单中。

android:excludeFromRecents="true"

所以它看起来像这样:

<activity
name:=blah
...
android:excludeFromRecents="true"
>
...
...
</activity>

我使用了这个和android.os.process.killprocess并且它有效。该应用程序已停止,并且未显示在我最近的应用程序中(再次,假设您想要的内容)。

我从Android - Remove application from Recent Apps

得到了这个答案

答案 1 :(得分:0)

是的,当您启动清除以前所有活动的意图时,可以使用FLAG_ACTIVITY_CLEAR_TOP标记。因此,当用户按“返回”时,它将关闭应用程序。

Intent intent = new Intent(this, NewTop.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。

     

例如,考虑一个由活动组成的任务:A,B,C,D。   如果D调用带有解析为的Intent的startActivity()   活动B的组成部分,然后C和D将完成,B接收   给定的Intent,导致堆栈现在为:A,B。

     

上例中活动B的当前运行实例将会   要么接收你从这里开始的新意图   onNewIntent()方法,或者自己完成并重新使用new   意图。如果它已宣布其启动模式为“多个”(   默认情况下,您没有设置FLAG_ACTIVITY_SINGLE_TOP   意图,然后它将完成并重新创建;所有其他发射   模式或如果设置了FLAG_ACTIVITY_SINGLE_TOP,那么此Intent将是   传递给当前实例的onNewIntent()。

     

此启动模式也可用于与之配合使用   FLAG_ACTIVITY_NEW_TASK:如果用于启动任务的根活动,   它会将任何当前正在运行的任务实例带到   前景,然后将其清除到其根状态。这是特别的   例如,从通知启动活动时很有用   管理器。

此外,如果您不知道每次用户按下后退按钮,onBackPressed都会被调用,因此如果您想要执行不同的操作,请覆盖它(但是,您仍应使用我上面所说的方式做你想做的事。)

答案 2 :(得分:0)

有用 Android - How To Override the "Back" button so it doesn't Finish() my Activity?

您正在使用android onKeyDown方法并按下后退按钮。 http://developer.android.com/reference/android/app/Activity.html#onKeyDown

完成后,您想要获取应用程序上下文并完成()。

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    getApplicationContext().finish(); 
    return true;
    }
    return super.onKeyDown(keyCode, event);
}

注意:

  • 此类必须扩展访问后退键按下方法的活动。
  • 您可能在代码中的某处有类似Context context = getActivityContext()的内容,这不是正确的上下文,因为结束此上下文只会关闭堆栈顶部的活动
  • 在此上下文中不应该执行杀戮过程,它用于强制关闭应用程序。确保你完成,这意味着保存了所有必要的东西,应用程序可以自然而不是强制结束。

答案 3 :(得分:0)

覆盖

 @Override
    onBackPressed()
    {
    }

在你的活动中,用这个方法做你的东西,当用户按回按钮

时会调用它