如何知道返回的活动

时间:2014-01-06 17:44:35

标签: android android-activity

我有3项活动:A,B和C.

从A到B,从A到C。

A --- B
|
|
C

当我从这两个活动返回A时,我按下后退按钮。

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

更新 - - 我想知道如何知道什么活动按onBackPress();我不使用B或C中的startActivity;

3 个答案:

答案 0 :(得分:2)

启动活动A和C时,请使用startActivityForResult(...)代替常规startActivity(...)。您可以为ACTIVITY_ID,ACTIVITY_B和ACTIVITY_C创建静态整数变量。当您的用户退出B或C时,请使用相应的ID变量调用setResult(...)。有关此方法的详细信息,请参阅有关活动的开发人员文档:http://developer.android.com/reference/android/app/Activity.html

答案 1 :(得分:1)

开始活动B& C作为startActivityForResult,使用setResult方法从B / C发送数据,在A中接收数据作为onActivityResult。

How to pass data from 2nd activity to 1st activity when pressed back? - android

答案 2 :(得分:1)

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

private static final int ACTIVITY_B_REQUEST = 100;
private static final int ACTIVITY_C_REQUEST = 200;

然后开始行动。

B:

Intent intent = new Intent(this, ActivityB.class);
startActivityForResult(intent, ACTIVITY_B_REQUEST);

和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处理过。