是否可以覆盖我的默认电话"返回"按钮?我想在我的手机上结束应用程序后退按钮点击。我该怎么做?谢谢!
答案 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并且它有效。该应用程序已停止,并且未显示在我最近的应用程序中(再次,假设您想要的内容)。
得到了这个答案答案 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);
}
注意:
答案 3 :(得分:0)
覆盖
@Override
onBackPressed()
{
}
在你的活动中,用这个方法做你的东西,当用户按回按钮
时会调用它