我希望在用户点击android中的后退按钮时结束整个应用程序。当前它再次转到上一个打开的活动。 我也尝试覆盖onBackPressed(),但它不起作用。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
enter code here
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
return;
}
答案 0 :(得分:4)
试试这个,从一个充当你的Root的Activity开始你的应用程序。
public class Root extends Activity {
public void onCreate() {
super.onCreate();
handleIntent();
}
public void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent();
}
private void handleIntent() {
boolean end = getIntent.getBooleanExtra("End");
if (end) {
finish();
} else {
Intent intent = new Intent(this, MyRealFirstActivity.class); // where this is the class that you want the user to see when they launch your app.
startActivity(intent);
}
}
public void onResume() {
super.onResume();
finish();
}
}
然后在您希望后退按钮结束应用的活动内,执行以下操作:
public class LastActivity extends Activity {
public void onBackPressed() {
Intent intent = new Intent(this, Root.class);
intent.putExtra("End", true);
intent.addFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
这样,启动应用程序然后点击后退按钮之间启动的所有活动都将为您完成()。这基本上将从开始到结束然后退出应用程序的清单。
答案 1 :(得分:2)
在这种情况下,您需要完成活动,因此您将使用finish()方法关闭当前活动。但是你也应该在每个以前的活动中写下finish(),你可以调用intent(启动另一个活动)。希望它能说清楚。
答案 2 :(得分:1)
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.finish();
startActivity(intent);
}
答案 3 :(得分:1)
此处我们后退按钮上有两种方法到finish or kill
应用。
在Android屏幕上使用关闭或完成当前活动的finish()
。
例如:您有2项活动,即 A &的乙即可。您将使用意图从 A 活动转到 B 活动,现在前景活动是 B ,您想要返回&杀死 B 活动&转到 A 活动使用finish()
点击后退按钮。如果您使用 A 活动,则会关闭该应用。见下面的代码。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
}
return super.onKeyDown(keyCode, event);
}
使用android.os.Process.killProcess(android.os.Process.myPid());
杀死应用程序,例如强制关闭应用程序&转到主屏幕。见下面的代码。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Kills & force closes the app
android.os.Process.killProcess(android.os.Process.myPid());
}
return super.onKeyDown(keyCode, event);
}
答案 4 :(得分:1)
以下是我在我的应用程序中执行此操作的方式:ActivityA是第一个启动的;它反过来启动ActivityB。在ActivityB中我可能会遇到错误,在这种情况下我想返回activityA,或者一切都可能正确完成,在这种情况下我想完全“完成”应用程序。
在ActivityA中:
public class ActivityA extends Activity {
...
private final static int REQUEST_ACT_B = 1;
...
private void startChild() {
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_ACT_B;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_TASK && resultCode == ActivityB.RESULT_OK) {
this.finish();
}
}
}
然后在ActivityB中:
public class ActivityB extends Activity {
...
public final static int RESULT_OK = 1;
public final static int RESULT_ERROR = 2;
...
private void finishWithError() {
setResult(RESULT_ERROR);
finish();
}
private void finishSuccessfully() {
setResult(RESULT_OK);
}
}
基本上,ActivityA启动ActivityB并期望返回结果。如果它收到结果“OK”,那么它会自行关闭并且用户不是更聪明:应用程序已完成。如果收到结果“错误”,则ActivityA保持打开状态。