假设我有 3 个活动。
- 第一的
- 第二
- 结果。
First 和 Second 都调用 Result 活动startActivityForResult()
。在结果中,根据调用活动,我想返回不同的结果。
有什么方法可以决定哪个调用了 Result Activity 并将结果返回给该活动。
假设我有 3 个活动。
First 和 Second 都调用 Result 活动startActivityForResult()
。在结果中,根据调用活动,我想返回不同的结果。
有什么方法可以决定哪个调用了 Result Activity 并将结果返回给该活动。
您可以使用找到调用活动getCallingActivity ()
您不能同时在顶部进行多项活动。您是否要让它们一个接一个地按顺序运行?
实现此目的的一种方法是启动每个活动以获得结果:
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, 0);
您在哪里使用请求代码来跟踪活动何时运行。然后,在 onActivityResult 你可以开始下一个:
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
if (requestCode < NUM_ACTIVITIES) {
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, requestCode + 1);
}
}
如果你想让一些活动立即在后台运行,你可以通过在每个活动的 onCreate 中调用 startActivity 将它们链接在一起。如果在创建任何视图之前在 onCreate 中启动一个新 Activity,则该 Activity 将永远不可见。
protected void onCreate (Bundle savedInstanceState) {
int numLeft = getIntent().getIntExtra("numLeft");
if (numLeft > 0) {
Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("numLeft", numLeft - 1);
startActivity(intent);
}
}
在您调用活动时,使用 setresult 完成活动
Intent in = new Intent();
setResult(100, in);
finish();
在你的第一个活动中
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.i(Tag, "Result: " + Integer.toString(resultCode));
if (resultCode == 200) {
Log.i(Tag, "second");
} else if (resultCode == 100) {
Log.i(Tag, "activity");
}
}