Android 如何知道哪些活动正在恢复

Android 如何知道哪些活动正在恢复,android,android-activity,Android,Android Activity,我有3项活动:A、B和C 从A到B,从A到C A --- B | | C 当我从这两个活动返回A时,我按下后退按钮 从A,我如何知道堆栈中有什么活动?我怎么知道是B还是C 更新- 我想知道如何知道按BackPress()时的动作;我不使用B或C的startActivity 启动活动A和C时,使用startActivityForResult(…)而不是常规的startActivity(…)。您可以为ACTIVITY_ID、ACTIVITY_B和ACTIVITY_C创建静态整数变量。当用户退出B或

我有3项活动:A、B和C

从A到B,从A到C

A --- B
|
|
C
当我从这两个活动返回A时,我按下后退按钮

从A,我如何知道堆栈中有什么活动?我怎么知道是B还是C

更新-
我想知道如何知道按BackPress()时的动作;我不使用B或C的startActivity

启动活动A和C时,使用
startActivityForResult(…)
而不是常规的
startActivity(…)
。您可以为ACTIVITY_ID、ACTIVITY_B和ACTIVITY_C创建静态整数变量。当用户退出B或C时,使用相应的ID变量调用
setResult(…)
。有关此方法的更多信息,请参阅活动的开发者文档:

启动活动A和C时,使用
startActivityForResult(…)
而不是常规的
startActivity(…)
。您可以为ACTIVITY_ID、ACTIVITY_B和ACTIVITY_C创建静态整数变量。当用户退出B或C时,使用相应的ID变量调用
setResult(…)
。有关此方法的更多信息,请参阅活动的开发者文档:

将活动B&C作为startActivityForResult启动,使用setResult方法从B/C发送回数据,并在接收数据中作为onActivityResult启动


将活动B&C作为StartActivityResult启动。对于此问题,请使用setResult方法将数据从B/C发送回,并在接收数据中作为onActivityResult启动


只需将Android的请求代码与startActivityForResult()配合使用即可。在活动A中,使用不同的请求代码呼叫B或C。首先,定义代码:

private static final int ACTIVITY_B_REQUEST = 100;
private static final int ACTIVITY_C_REQUEST = 200;
然后开始行动

B:

和C:

Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, ACTIVITY_C_REQUEST);
然后,仍然在ActivityA中重写onActivityResult(),并检查按下“后退”按钮时返回的请求代码:

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

    switch (requestCode) {
        case ACTIVITY_B_REQUEST:
            //returned from ActivityB
            break;

        case ACTIVITY_C_REQUEST:
            //returned from ActivityC
            break;

        default:
            break;        
    }
}

无需从B或C传递任何信息-它已经由Android处理。

只需将Android的请求代码与startActivityForResult()一起使用即可。在活动A中,使用不同的请求代码呼叫B或C。首先,定义代码:

private static final int ACTIVITY_B_REQUEST = 100;
private static final int ACTIVITY_C_REQUEST = 200;
然后开始行动

B:

和C:

Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, ACTIVITY_C_REQUEST);
然后,仍然在ActivityA中重写onActivityResult(),并检查按下“后退”按钮时返回的请求代码:

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

    switch (requestCode) {
        case ACTIVITY_B_REQUEST:
            //returned from ActivityB
            break;

        case ACTIVITY_C_REQUEST:
            //returned from ActivityC
            break;

        default:
            break;        
    }
}

不需要从B或C传递任何信息-它已经由Android处理。

我想知道当在B和C中按Backpress()时如何知道这一点。我没有使用startActivity(),只使用onBackPressed()。在
onBackPressed(…)
call
setResult(…)
中。重写活动A中的onActivityResult(…)。在那里获取结果。我想知道当在B和C中按onBackPressed()时如何知道这一点。我没有使用startActivity(),只使用onBackPressed()。在
onBackPressed(…)
call
setResult(…)
中。重写活动A中的活动结果(…)。在那里获取结果。