使用onBackPressed()完成活动

时间:2015-11-30 06:51:08

标签: android

我有两个活动,比如第一个和第二个。我通过点击一个按钮指向第一个活动的第二个活动。我在做了一些工作之后再次从第二个活动开始第一个活动。所以有些值会相应更新。当我回到第一个活动时,我调用了finish()方法。所以如果我按下手机后退按钮,第二个活动就没有开始。但问题是当我点击后退按钮时它直接转到第一个活动有我以前的数据(数据,当我启动应用程序。)我想停止这个。我想按下后退按钮完成我的第一个活动。如果问题不清楚请告诉我。我想解决这个问题。

例如: A(原始状态) - > B(第二活动) - > A(更新状态)。 当我离开B - > A(更新状态)并从A.按下按钮直接返回A(原始状态)。我想停止此操作并希望在按下A按钮(更新状态)时完成应用程序

3 个答案:

答案 0 :(得分:1)

当你从第二个活动转移到第一个活动(从B - > A)

时,

这一行

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

它将清除活动堆栈

另一种方法是,
不要启动活动第二次,只需使用setData从活动B传递数据,并获取活动A中的所有数据onActivityResult()

答案 1 :(得分:1)

当您开始第二项活动时,请使用startActivityForResult()。相反,启动一个活动,第二个活动就像子活动一样开始,当你关闭第二个活动时,你将回到第一个活动,并调用一个回调方法onActivityResult(),你可以在那里更新你的状态,现在如果按后退按钮,您的应用程序将关闭。

  1. 从活动A开始活动B

    startActivityForResult(intent, REQUEST_CODE);
    
  2. 完成活动B之前
  3. setResult(RESULT_OK, intent);
    finish();
    
  4. 活动A
  5. @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Check which request we're responding to
        if (requestCode == REQUEST_CODE) {
            // Make sure the request was successful
            if (resultCode == RESULT_OK) {
            // get your data and use it
            }
        } 
    }
    
  6. 以下是startActivityForResult()

    an example

答案 2 :(得分:1)

每次按功能移动到其他Activity时,您都可以调用finish()函数: startActivity()如下:

A - > B:

Intent i = new Intent(this, B.class);
startActivity(i);
finish();