关闭应用程序而不是返回上一个活动

时间:2012-03-22 10:18:43

标签: android android-layout

我有以下问题:我打开了活动A,从中打开了活动B.然后我想从B打开活动C,这样当按下C活动中的后退按钮时,应用程序应该是关闭而不是回到之前的(B)活动。我试图使用这里的想法(http://stackoverflow.com/questions/5794506/android-clear-the-back-stack),但它们不起作用。我知道如何处理意图,我只对后导航问题感兴趣。

5 个答案:

答案 0 :(得分:6)

开始这样的活动..

活动A

  int k=1;
            Intent i=new Intent(A.this,B.class);
            startActivityForResult(i,k);

活动B

  int j=1;
            Intent i=new Intent(B.this,C.class);
            startActivityForResult(i,j);
活动C中的

覆盖后退按钮

  @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    setResult(RESULT_OK, null);
    finish();
}
 return super.onKeyDown(keyCode, event);
}

并将其放入活动B

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (requestCode ==1) {
          if (resultCode == RESULT_OK) {

            setResult(RESULT_OK, null);
         finish();

          }
       }

并将其放入活动A

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (requestCode ==1) {
          if (resultCode == RESULT_OK) {
         finish();

          }
       }
    }

答案 1 :(得分:2)

finish()放在活动A和B的onStop()中。这将关闭两个活动,因此当您按活动C的后退按钮时,应用程序将退出。这将解决您的问题

  public void onStop(){
    super.onStop();
    finish();
    }

答案 2 :(得分:1)

我强烈反对调用System.exit(0);

您可以做的是以下内容。活动A在StartActivity(B)之后立即调用finish()。同样,B在startActivity(C)之后调用finish()。这样,C是唯一活动的Activity,按下后退将停止应用程序。或者更确切地说,将其从堆栈中删除。

你不应该在onStop()中调用finish()。启动新活动时或活动中的处理完成后调用finish()。

顺便说一下,finish()没有立即完成你的活动。完成放置在堆栈上,并在当前方法完成后立即执行。同样,startActivity不会立即执行,而是在当前方法完成时执行。

答案 3 :(得分:0)

在BackPress上,您可以使用

System.exit(0);

完成申请。

答案 4 :(得分:0)

您可以使用下面的代码进入设备主屏幕。

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