我有3项活动:A,B和C.
从A到B,从A到C。
A --- B
|
|
C
当我从这两个活动返回A时,我按下后退按钮。
从A,我怎么知道堆栈中有什么活动?我怎么知道是B还是C?
更新 - - 我想知道如何知道什么活动按onBackPress();我不使用B或C中的startActivity;
答案 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处理过。