我想知道,如果用户在其他Activity上按下返回按钮,是否显示了我的Activity。 在生命周期中,我找不到任何可以可靠地提供这个信息的回调函数。
onRestart()
不起作用。如果应用程序任务被带到前台,它也会触发。
onResume()
由于同样的原因也不起作用。
我想这应该有一个简单的解决方案,但在Android中,看似简单的事情可能会变得相当棘手。
我想知道,如果用户在其他Activity上按下返回按钮,是否显示了我的Activity。 在生命周期中,我找不到任何可以可靠地提供这个信息的回调函数。
onRestart()
不起作用。如果应用程序任务被带到前台,它也会触发。
onResume()
由于同样的原因也不起作用。
我想这应该有一个简单的解决方案,但在Android中,看似简单的事情可能会变得相当棘手。
使用startActivityForResult(Intent, int)
方法调用第二个Activity,然后在第二个Activity中重写onBackPressed()
方法并将其setResult()
为RESULT_CANCELED
。 最后,在第一个Activity中通过onActivityResult()
捕获。
代码示例:
第一个Activity:
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();
}