2

我的应用程序已按照教程进行操作。

我有:标签1:Tabgroupactivity1>(startchildactivity)MainActivty>(startchildactivity)ListActivity>(startchildactivity)DetailActivity

同样,我还有其他两个标签。

问题是,当我从以下任何活动返回到前一个活动时,它(前一个)会重新启动。

我也尝试过使用 SINGLE_TOP 和 SINGLE_TASK 启动子活动,但只有一次我可以完成流程

第二次它不调用以下(下一个/子)活动

那么我如何在需要子活动并返回时保持当前的活动状态?

我正在使用 listactivty 的以下意图 onclick:

Intent myintent = new Intent(getParent(),Second.class);
myintent.putExtra("id",favadapter.getItem(position).id.toString());
TabGroupActivity parentFav = (TabGroupActivity)getParent();
parentFav.startChildActivity("FavActivity", myintent);
4

1 回答 1

2

实际上 TabGroupActivity 在 android 2.1 和 2.2 中存在问题,未正确从堆栈中删除的活动导致我们的实例每次都重新启动。

为了克服这个问题,我们使用了 SINGLE_TOP 和 SINGLE_TASK,即使它导致另一个问题只有一个实例运行而不是第二次运行,因为在子完成中我们这样做了,

Intent lastIntent = manager.getActivity(lastId).getIntent();
        Window newWindow = manager.startActivity(lastId, lastIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));
        setContentView(newWindow.getDecorView());

意味着它会删除所有 lastID 意图并带来最新的意图,因为您的 lastId (在启动活动时使用.startChildActivity("FavActivity", myintent);)对于多个实例是相同的。

为了允许您的子活动第二次或多个实例运行,请使用动态意图 ID来启动子活动。

例如,

Intent myintent = new Intent(getParent(),Second.class);
myintent.putExtra("id",favadapter.getItem(position).id.toString());
TabGroupActivity parentFav = (TabGroupActivity)getParent();
parentFav.startChildActivity("FavActivity"+System.currentTimemillis(), myintent);
于 2012-03-21T12:39:14.627 回答