我的应用程序有一个名为 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