我已经为我的应用程序遵循了this教程。
我有:
选项卡1:Tabgroupactivity1>(startchildactivity)MainActivty>(startchildactivity)ListActivity>(startchildactivity)DetailActivity
同样,我还有另外两个标签。
问题是,当我从以下任何一项活动返回到上一个活动时,它(上一个活动)将重新启动。
我也曾经尝试过使用SINGLE_TOP和SINGLE_TASK进行startchild活动,但是只有在此之后,我才能完成流程
第二次它不调用后续(下一个/子级)活动
那么,当它要求子活动并返回时,如何保持当前的活动状态?
我正在使用以下意图onlistactivty onclick:
Intent myintent = new Intent(getParent(),Second.class);
myintent.putExtra("id",favadapter.getItem(position).id.toString());
TabGroupActivity parentFav = (TabGroupActivity)getParent();
parentFav.startChildActivity("FavActivity", myintent);
最佳答案
实际上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);