0

我的应用程序有一个名为 DetailActivity 的活动。在 DetailActivity 中,我有一个返回按钮和另一个按钮来启动另一个具有不同参数的 DetailActivity。当按下按钮返回时,我调用:

((DetailActivity) ctx).finish();

当启动另一个 DetailActivity 时,我的应用程序有选项卡,所以它是这样的:

TabActivityGroupAbs parentActivity = (TabActivityGroupAbs) ((Activity) ctx)
                                .getParent();
Intent detailIntent = new Intent(parentActivity, DetailActivity.class);
parentActivity.startChildActivity("DetailFromGame", detailIntent);

现在从 DetailActivity A,我启动 DetailActivity B,从 B 我启动 C。然后我按下回。从 C 到 B 正确。然后我又按回去了。应用程序崩溃了。似乎它只能回到以前的 1 个活动。我尝试调试,当它运行时((DetailActivity) ctx).finish();,我看到 NullPointerException。但是我不知道什么指针是空的???

有谁知道如何解决这个问题?

编辑:我试着抓住这((DetailActivity) ctx).finish();条线,它抛出java.lang.RuntimeException: Unable to destroy activity {myapp.DetailActivity}: java.lang.NullPointerException

我猜是因为我有 2 个 DetailActivity 实例,所以当我调用 时((DetailActivity) ctx).finish();,ctx 或任何对 DetailActivity 的引用以某种方式变为空。我对Android很陌生,所以我不确定

已解决:我的错。在 onDestroy() 中,我访问了一些静态字段,然后将它们设置为 null。所以下次调用 finish() 时,那些静态字段将抛出 NullPointerException

4

0 回答 0