1

我有两个活动,比如 A1 和 A2。序列是 A1->A2 从 A1 我开始 A2 而不在 A1 中调用 finish()。在我按下 A2 中的后退按钮后,我想在 A1 中触发一个功能。但是,如果我在 A1 中使用 onResume(),即使在我想避免的活动 A1 开始期间也会触发该函数。它只应在 A2 的“后”按时调用。

4

4 回答 4

4

那么从 A2startActivityForResult开始

A1机具

  @Override
  public void onActivityResult(final int requestCode, int resultCode, final Intent data) {

   // your code here

}

在 A2 中覆盖 onBackPresset 以在完成活动之前设置结果。而已。

于 2012-04-17T10:04:36.013 回答
1

这是另一种方法(一种是根据 Dimitar)。

public class A extends Activity {
    public static boolean isCalledFromB = false;

    public void onCreate(Bundle instance) {
        isCalledFromB = false;
    }

    public void onResume()
    {
        if(isCalledFromB)
            dosomething();

    }

    public void dosomething() {

    }

}

public class B extends Activity {
..............

    public boolean onKeyDown(int keycode, KeyEvent event) {
        if (keycode == KeyEvent.KEYCODE_BACK) {
            A.isCalledFromB=true;
            finish();
        } 
        return true;
    }

}
于 2012-04-17T10:48:06.713 回答
-1

然后覆盖onBackPressed()A2 Activity 中的方法。

仅供参考:它适用于 Android 2.x,否则您可以在 Android 1.x 中使用 onKeyDown()

第二种方式:

使用 启动 Activity A1 中的 A2 活动startActivityForResult()。因此,当您按下返回键时,它会将您重定向到onActivityResult()A1 活动内部。因此,在 onActivityResult() 中,您可以编写该代码。

于 2012-04-17T10:02:33.147 回答
-1

onResume无论是第一次还是重新启动,都将始终被调用。您可以通过覆盖来实现相同的目的onRestart()

编辑1:

按照其他用户的建议,改用 startActivityForResult 。

于 2012-04-17T10:05:20.243 回答