我关注了this我的应用程序教程。
我有: 选项卡 1:Tabgroupactivity1>(startchildactivity)MainActivty>(startchildactivity)ListActivity>(startchildactivity)DetailActivity
同样我还有另外两个标签。
问题是,当我从以下任何 Activity 返回到前一个 Activity 时,它(前一个)会重新启动。
我也曾尝试使用 SINGLE_TOP 和 SINGLE_TASK 启动子 Activity ,但在此只有一次我可以完成流程
第二次它不调用后续(下一个/子) Activity
那么当它调用子 Activity 并返回时,我如何保持当前 Activity 状态?
我正在使用 listactivty 的以下 Intent 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 中有一个问题, Activity 没有正确地从堆栈中删除导致我们的实例每次都重新启动。
为了克服这个问题,我们使用 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 Intent 并带来最新的 Intent ,因为您的 lastId(在启动 Activity .startChildActivity("FavActivity", myintent);
时使用)对于多个实例是相同的。
为了允许您的子 Activity 运行第二次或多次运行,请使用Dynamic intent ID 启动子 Activity。
例如,
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);
关于android - 在选项卡组 Activity 中维护子 Activity 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544250/