14

我想知道我的活动是否因为用户按下了其他活动而被显示。在生命周期中,我无法识别任何有力地为我提供该信息的回调。

onRestart()不管用。如果将应用程序任务放在前面,它也会触发。 onResume()出于同样的原因将无法正常工作。

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

4

1 回答 1

18

使用 调用您的第二个活动startActivityForResult(Intent, int),然后覆盖onBackPressed()第二个活动中的 并将其setResult()设置为RESULT_CANCELED。最后,让第一个活动在onActivityResult().

代码示例:

活动一:

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
        }
    }
}

活动二:

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    finish();
}
于 2012-08-28T12:05:10.377 回答