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が表示されます。しかし、どのポインタが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をスローします。

4

0 に答える 0