按下后退时关闭应用程序

时间:2014-01-02 04:02:03

标签: android android-layout android-fragments android-fragmentactivity

我想在用户点击后退按钮时关闭应用程序。我的流程是这样的

首次登录:

登录屏幕A->主页B. 现在我想在用户按下后退按钮时关闭应用程序。它将返回登录屏幕。我该怎么办?

8 个答案:

答案 0 :(得分:3)

Main page活动Login开始,完成login页面。所以在活动堆栈中没有登录页面。因此,当您按下后退按钮时,从主页面将关闭应用程序。

答案 1 :(得分:3)

当您使用意图从A开始活动B时,请在开始活动后放置finish()。这将从堆栈中删除作为登录页面的当前活动,当用户按下时,他将退出应用程序。 示例代码为:

Intent intent = new Intent((getApplicationContext(),B.class);
startActivity(intent);
finish();

答案 2 :(得分:2)

对于您用于进入其他活动的每个意图,您必须按照这种方式传递意图,只需将标记传递给下面及之后给出的每个意图使用 startActivity()开始活动你必须在下面给出的演示代码后添加完成()

Intent i=new Intent(firstActivity.this,secondActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

答案 3 :(得分:1)

这是对您的问题的类似讨论。 。Here

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    onBackPressed();

}

return super.onKeyDown(keyCode, event);
  }

 public void onBackPressed() {
Intent myIntent = new Intent(B.this, A.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//clear the backstack
startActivity(myIntent);
finish();
return;
   }

以上代码解释HERE 只需清除活动堆栈,然后完成活动..那就是你的应用程序将被关闭。

答案 4 :(得分:1)

在您的第二个活动'B'中,您应该覆盖onBackPressed方法以完成当前应用程序。所以你可以这样做:

@Override
public void onBackPressed() {
      Toast.makeText(getBaseContext(),"Exiting application...",Toast.LENGTH_SHORT).show();
      this.finish();
}

这件事对我有所帮助。我希望它对你也有所帮助。

答案 5 :(得分:1)

你可以完成活动,但你不能退出应用程序,因为android设计不是选择退出应用程序。相反,你可以称之为家庭意图带回家:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); 

答案 6 :(得分:0)

另一种方式是:

试试这个,在你的mainifest文件中为每个活动添加noHistory。

android:noHistory="true"

答案 7 :(得分:0)

OverRide方法

onBackPressed(){
//desired task like
//finish Activity here
}

并完成那里的活动