我有一个小问题困扰着我。我怎样才能完成活动C并启动它的父级。但棘手的部分是我可以从其他20个活动开始活动C.当我在C上调用完成时,我的想法是打开正确的那个。另一个是我有tabhost
,哪个孩子打开活动C.
有任何建议如何实现这一目标?
答案 0 :(得分:2)
C保存以下变量:
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();
}
请注意,这可能会创建一个新的父活动。如果这可能会产生问题,你可以自行处理这种情况。
另一种解决方案是在启动新活动时完成彼此的子活动。这将确保在您的堆栈中,您将始终拥有子活动下方的父级。
答案 1 :(得分:1)
如果当前完全在父活动之上,您可以完成当前的活动,并依赖于您的活动堆栈,它将转到之前的活动。如果要清除所有活动堆栈并重新开始新活动,请尝试
Intent intent1 = new Intent(context, activity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
清除你的堆栈并重新开始,如果你有一堆活动超过父级想要完成所有使用它并再次从父级开始。
答案 2 :(得分:1)
我只是做了这样的事情:
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
这就是诀窍。
答案 3 :(得分:0)
查看Task and Backstack,Implementing Temporal和Ancestral Navigation
有更具体的解释。希望这个帮助