Android 如何知道哪些活动正在恢复
我有3项活动:A、B和C 从A到B,从A到CAndroid 如何知道哪些活动正在恢复,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或
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(…)
callsetResult(…)
中。重写活动A中的onActivityResult(…)。在那里获取结果。我想知道当在B和C中按onBackPressed()时如何知道这一点。我没有使用startActivity(),只使用onBackPressed()。在onBackPressed(…)
callsetResult(…)
中。重写活动A中的活动结果(…)。在那里获取结果。