当我按下设备的后退按钮时,我想进入主屏幕。我正在使用此代码..
public void onBackPressed() {
this.finish();
return;
}
答案 0 :(得分:18)
按BACK键会有效地为您拨打finish()
。无需捕获BACK键。
我假设您的问题是当您按下BACK键时,它只是回到您应用中的上一个Activity
。
如果是这种情况,那么当他们在您的应用中开始新的Activity
时,让所有活动“自我终止”....
startActivity(new Intent(this, MyNewActivity.class));
finish();
如果您这样做,那么按BACK时将不会返回Activity
,它将始终返回主屏幕。
答案 1 :(得分:6)
你可以试试这个
@Override
public void onBackPressed() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
答案 2 :(得分:3)
好的,要启动设备的Home sceen,请在onKeyDown()
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
如果您想要关闭您的应用程序,那么我认为您必须以finish()
以某种方式(某种标准方式)或使用
android.os.Process.killProcess(android.os.Process.myPid())
此代码会杀死您的应用。
(有些丑陋的方式..!)
答案 3 :(得分:3)
你应该覆盖finish()
@Override
public void finish() {
System.out.println("finish activity");
SaveData();
System.runFinalizersOnExit(true) ;
super.finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
然后调用此方法:
@Override
public void onBackPressed() {
this.finish();
}
答案 4 :(得分:2)
当您致电NewAcitivy致电finish()
时。startActivity
之后,之前的活动将被关闭。
然后使用
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
答案 5 :(得分:1)
你可以试试这个:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK){
this.finish ();
}
return true;
}
答案 6 :(得分:0)
你想覆盖OnkeyDown&完成活动
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 7 :(得分:0)
简单的方法是在您进入下一个活动时完成当前活动。
只需在finish()
后执行startActivity()
,然后在任何活动的背面按下,只需拨打finish()
即可退出应用程序,因为所有其他活动都不存在在堆栈中。
答案 8 :(得分:0)
您可以从任何地方关闭应用程序以调用此类Intent:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这是从任何地方,任何点击事件中关闭应用程序的最佳方式
答案 9 :(得分:0)
您需要使用标志启动意图以清除实际活动之上的活动。
public void onBackPressed() {
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
this.finish();
}
答案 10 :(得分:0)
从官方 Guideline
中引用<强> FLAG_ACTIVITY_CLEAR_TOP 强>
如果设置,则正在启动的活动已在运行中 当前任务,然后而不是启动它的新实例 活动,其上的所有其他活动将被关闭 这个意图将作为一个传递到(现在在顶部)旧活动 新的意图。
<强> FLAG_ACTIVITY_CLEAR_TASK 强>
如果在传递给Context.startActivity()的Intent中设置,则此标志将为 导致任何与活动相关联的现有任务 在活动开始前清除。也就是活动 成为一个空的任务的新根,和任何旧的任务 活动结束了。这只能与。一起使用 FLAG_ACTIVITY_NEW_TASK。
<强> FLAG_ACTIVITY_NO_HISTORY 强>
如果设置,则新活动不会保留在历史堆栈中。立刻 用户离开它,活动结束。这可能 也可以使用noHistory属性设置。
<强> FLAG_ACTIVITY_NEW_TASK 强>
如果设置,此活动将成为此任务的新任务的开始 历史堆栈。
@Override
public void onBackPressed()
{
Intent intCloseApp = new Intent(Intent.ACTION_MAIN);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intCloseApp.addCategory(Intent.CATEGORY_HOME);
intCloseApp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intCloseApp);
}
答案 11 :(得分:0)
public void onBackPressed() {
System.exit(1);
return;
}
野蛮的方式