2011-11-22 109 views
2

我有一个问题困扰着我。我怎样才能完成活动C并开始它的父母。但棘手的部分是,我可以从20个其他活动开始活动C.这个想法是打开正确的一个,当我打电话完成对C.另一件事是,我有tabhost,哪些孩子打开活动C.Android完成当前活动并启动父项活动

任何建议如何实现这一目标?

+0

活动c有tabhost在它或一些主要活动包含tabhost和从这些标签活动活动c你打电话! – vikky

+1

您可以使用ActivityGroup(包含并运行多个嵌入式活动的屏幕)扩展您的活动,您可以在其中完成活动C并清除所有前期活动的列表,以使您的初始活动再次重新启动。如果它是tabhost,请查找TabGroupActivity类示例 – 2011-11-22 12:45:40

+0

第二个,活动C由tabhost中的活动调用。 –

回答

1

我压根儿是这样的:

Intent intent = new Intent(); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
finish(); 

这并获得成功。

1

取决于您的活动堆栈,如果您的当前正好在父活动的顶部,您可以完成当前的活动并且它将转到之前的活动。如果要清除所有活动堆栈,并开始了新的活动尝试

Intent intent1 = new Intent(context, activity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent1); 

其清除栈,并开始了新的,如果你有超过父堆栈活动要完成所有使用和重新开始的父母。

+0

我想回到之前的活动,我忘了提及我想清除历史,但是我应该放置什么而不是'activity.class'? –

+0

您想要作为班级重定向的活动名称 –

2
在活动Ç

保存下列变量:

Class parent = ParentActivityClass.class; 

覆盖:

public void onBackPressed(){ 
    //create an intent like 
    Intent i = new Intent(this, parent); 
    startActivity(i); 
    //add extras to intent if needed 
    this.finish(); 
} 

请注意,这可能会创建一个新的父活动。如果这可能会产生问题,则由您来处理这种情况。

另一种解决方案是在启动新活动时完成彼此的子活动。这将确保在你的筹码中,你将始终拥有低于儿童活动的家长。