Android活动流程

时间:2012-04-17 09:58:26

标签: android android-activity

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

4 个答案:

答案 0 :(得分:4)

startActivityForResult然后在

开始A2

A1工具

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

   // your code here

}
A2中的

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

答案 1 :(得分: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;
    }

}

答案 2 :(得分:-1)

然后在A2活动中覆盖 onBackPressed() 方法。

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

第二种方式:

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

答案 3 :(得分:-1)

无论是第一次还是重启,都会始终调用

onResume。您可以通过覆盖onRestart()

来实现相同目标

编辑1:

使用startActivityForResult,而不是其他用户建议的。