我尝试使用此代码从父活动启动多个活动:
for (int i=0; i<NUM_ACTIVITIES; i++)
{
Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);
}
但是,根据我在MyActivity.onCreate()
中的登录,实际上只创建了1个活动。这种行为有望吗?如果是这样,启动多个活动的正确方法是什么?
答案 0 :(得分:9)
您不能同时拥有多项活动。你是想让它们一个接一个地按顺序运行吗?
实现此目的的一种方法是为结果启动每个活动:
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);
}
}
编辑: 如果您想在后台立即进行一些活动,可以通过在每个Activity的onCreate中调用startActivity将它们链接在一起。如果您在创建任何视图之前在onCreate中启动新活动,则该活动将永远不可见。
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);
}
}
这应该完成你想要的堆栈。