【问题标题】:StackOverflowError while navigating between activities of ActivityGroup在 ActivityGroup 的活动之间导航时出现 StackOverflowError
【发布时间】:2013-03-13 11:17:36
【问题描述】:

我正在制作一个带有标签的应用程序。在该应用程序中,相同的TabView 将显示在层次结构的多个活动中。为此我使用了ActivityGroup

在我的应用程序中,我可以从包含选项卡的第一个活动导航到其子活动,并且可以通过按子活动中的按钮返回上一个活动。在这两个活动之间导航时,我在几次导航后得到 StackOverflowError。 我试过标志

Intent.FLAG_ACTIVITY_CLEAR_TOP

但这无济于事。 我也试过了

finish() 

但它完成了整个ActivityGroup。 然后我尝试了方法

finishActivityFromChild() 

但仍然出现同样的错误。

这是我的代码,用于从包含选项卡的第一个活动移动到其子活动 -

intent = new Intent(context, ChildActivity.class);
View view = getLocalActivityManager().startActivity("activity2", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); 
setContentView(view);
finishActivityFromChild(getCurrentActivity(), 0);

我使用相同的代码在单击按钮时返回父活动-

public void onClick(View arg0) {
    intent = new Intent(context, ParentActivity.class);
    View view = getLocalActivityManager().startActivity("activity1", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); 
setContentView(view);
finishActivityFromChild(getCurrentActivity(), 0);
}

现在我不知道如何解决这个问题。任何帮助表示赞赏。 提前致谢。

【问题讨论】:

    标签: android android-activity stack-overflow activitygroup activity-finish


    【解决方案1】:

    我认为这里有一些代码会有所帮助。如果我是你,我会尝试打印出调用的函数,以查看递归调用的函数可能导致堆栈溢出。 (一些断点也可以解决问题)

    【讨论】:

    • 根据 API finishActivityFromChild() 在子级完成其活动时在父级中调用,您可能不应该显式调用它。您是否尝试过简单地使用打印或断点来找出正在进行的循环调用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多