【问题标题】:Maintainig state of child activities in TabGroupActivity在选项卡组活动中维护子活动的状态
【发布时间】:2012-01-22 13:48:03
【问题描述】:

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

我有: 选项卡1:Tabgroupactivity1>(startchildactivity)MainActivty>(startchildactivity)ListActivity>(startchildactivity)DetailActivity

类似地,我还有其他两个选项卡。

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

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

第二次不调用跟随(下一个/子)活动

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

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

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

【问题讨论】:

  • 粘贴您的代码以便正确理解。

标签: android tabs tabactivity activitygroup


【解决方案1】:

实际上 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);

【讨论】:

  • 我正好在一个月前使用过这个问题:String newId = Id+""+Math.random()*1000;窗口窗口 = getLocalActivityManager().startActivity(newId,intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));有时这也会给我大堆栈的空白屏幕。:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多