确定活动是否由于后退导航而出现在前面

时间:2012-08-28 12:03:48

标签: android android-activity back onresume

我想知道我的活动是否因为用户按下而显示 在其他一些活动上。在生命周期中,我无法识别任何回调 那些强有力地给我这个信息。

onRestart()无效。如果应用程序任务被带到前面,它也会触发。 onResume()因同样的原因无效。

我认为有一个简单的解决方案,但在Android中,据说简单的事情可能非常讨厌。

1 个答案:

答案 0 :(得分:18)

使用startActivityForResult(Intent, int)调用您的第二个活动,然后覆盖第二个活动中的onBackPressed()并将其setResult()改为RESULT_CANCELED。最后,将第一个活动捕获到onActivityResult()

代码示例:

活动1:

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 0);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        if (resultCode == RESULT_CANCELED) {
                // user pressed back from 2nd activity to go to 1st activity. code here
        }
    }
}

活动2:

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