我的应用有一项名为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。但我不知道什么指针是null ???
有人知道如何解决这个问题吗?
编辑:我尝试抓住((DetailActivity) ctx).finish();
行并抛出java.lang.RuntimeException: Unable to destroy activity {myapp.DetailActivity}: java.lang.NullPointerException
我想因为我有2个DetailActivity实例所以当我调用((DetailActivity) ctx).finish();
时,不知何故ctx或对DetailActivity的任何引用都变为null。我对Android很新,所以我不确定
解决:我的错。在onDestroy()中,我访问一些静态字段,然后将它们设置为null。因此,下次调用finish()时,这些静态字段将抛出NullPointerException