私のアプリには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
DetailActivityのインスタンスが2つあるので、を呼び出すと((DetailActivity) ctx).finish();
、どういうわけかctxまたはDetailActivityへの参照がnullになりました。私はAndroidにまったく慣れていないので、よくわかりません
解決済み:私のせいです。onDestroy()で、いくつかの静的フィールドにアクセスしてから、それらをnullに設定します。したがって、次にfinish()が呼び出されると、これらの静的フィールドはNullPointerExceptionをスローします。