如何在按下后退按钮时直接退出应用程序?

时间:2016-01-12 07:08:59

标签: android navigation onbackpressed

我的应用中有2个活动(A和B)。在活动B上,我有一个自定义工具栏。当用户单击工具栏时,它将返回到活动A.我希望用户每次按下活动A上的后退按钮时退出应用程序。 我的问题是每当用户点击活动A上的后退按钮时,它将计算用户输入活动B然后退出A的次数。

我正在使用此代码:

toolbar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent goBack=new Intent(getApplicationContext(),seephotoActivity.class);
                goBack.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
                        Intent.FLAG_ACTIVITY_CLEAR_TASK |
                        Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(goBack);
                finish();

            }
        });

我也尝试在我的AndroidManifest.xml中添加android:noHistory="true",但它仍在计算中。有人可以指出我的错误并解释它吗?

3 个答案:

答案 0 :(得分:0)

请参阅以下代码。

活动A

// It will navigate to the B Activty. Don't call finish() here.
startActivity(new Intent(ActivityA.this,ActivityB.class));

// Override the on back press method. 
@Override
  public void onBackPressed() {
    // TODO Auto-generated method stub
   // Process of Counting the no.of views/ counts goes here
      finish();
      super.onBackPressed();
  }

活动B

  

结束();

当按On工具栏中的Back时,

调用finish()方法。 这将使您回到活动A.不要开始新的活动。

然后当您再次按下ActivityA时,它将退出App。

试试这个,希望它能帮到你。

答案 1 :(得分:0)

如果您想要退出应用,请在活动A中尝试此操作

@Override
    public void onBackPressed()
    {
        finish();
    }

答案 2 :(得分:0)

我找到了解决问题的方法。所以问题是活动堆栈,所以我在Activity B中做了什么,我重写了像这样的反压方法

  @Override
    public void onBackPressed() {

        Intent goback;
        goback = new Intent(B_activity.this, A_Activity.class);
        goback.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        goback.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

        startActivity(goback);
    }

因此,当它返回到活动A时,活动A将位于堆栈顶部,而活动A后面没有任何其他内容。

然后在活动A中,我重写了这样的背压方法:

@Override
    public void onBackPressed()
    {
        finish();
    }

希望它能帮助那些和我有同样问题的人。