2014-01-06 88 views
0

我有3个活动:A,B和C如何知道什么活动返回

从AI得到了B和从AI去C.

A --- B 
| 
| 
C 

当我回归A从这两项活动中,我按下后退按钮。

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

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

回答

1

只要使用Android的请求代码与startActivityForResult()。在活动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的照顾。

2

当启动活动A和C时,请使用startActivityForResult(...)而不是常规startActivity(...)。您可以为ACTIVITY_ID,ACTIVITY_B和ACTIVITY_C创建静态整数变量。当您的用户退出B或C时,请使用相应的ID变量呼叫setResult(...)。有关此方法的更多信息,请参见活动显影剂DOC:http://developer.android.com/reference/android/app/Activity.html

+0

我想知道如何知道这在B和C按onBackPressed()时。我没有使用startActivity(),只有onBackPressed()。 – Roland

+0

在'onBackPressed(...)'调用'setResult(...)'。在活动A中覆盖'onActivityResult(...)'在那里获取结果。 –

相关问题