如何检测是否从儿童活动回来?

Vai*_*hra 11 android android-activity

如何在从子活动中按下后退按钮后检测活动是否成为焦点,如何在此时执行某些代码?

js-*_*js- 13

一种可能性是开始您的子活动startActivityForResult()并实施onActivityResult()从您从子活动返回时将被调用的活动.


Muz*_*Muz 6

js的答案是对的,但这里有一些调试过的代码.

将请求代码声明为活动顶部的常量:

public static final int OPEN_NEW_ACTIVITY = 12345;
Run Code Online (Sandbox Code Playgroud)

把它放在你开始新活动的地方:

Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
Run Code Online (Sandbox Code Playgroud)

活动结束后做一些事情.文档建议您使用resultCode,但根据具体情况,您的结果可以是RESULT_OKRESULT_CANCELED按下按钮时.所以我会把它留下来.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == OPEN_NEW_ACTIVITY) {
        // Execute your code on back here
        // ....
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我把它放在片段中时遇到了麻烦.所以你必须把它放在Activity中.

  • 这应该是可接受的答案...但是需要您的代码进行一些小的更正。requestCode的值范围是0到65535。因此,OPEN_NEW_ACTIVITY = 123456不起作用。因此,我更新了您的答案! (2认同)

Que*_*ERC 2

您正在寻找的方法可能是您可以在母类中实现的 onResume 方法;)。您必须知道,onResume 也会在您第一次启动任何 Activity 时调用。查看活动的生命周期:http://developer.android.com/images/activity_lifecycle.png

问候,