Ich mache einige Hintergrundarbeit und zeigen ein DialogFragment, während ich das tue. Sobald meine Arbeit abgeschlossen ist und der entsprechende Rückruf aufgerufen wird, verlasse ich den Dialog. Wenn ich das tue, erhalte ich einen Absturz durch ein NPE verursacht in der Android-Quelle, hier:DialogFragment.dism Absturz mit NullPointerException
void dismissInternal(boolean allowStateLoss) {
if (mDialog != null) {
mDialog.dismiss();
mDialog = null;
}
mRemoved = true;
if (mBackStackId >= 0) {
getFragmentManager().popBackStack(mBackStackId,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
mBackStackId = -1;
} else {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(this);
if (allowStateLoss) {
ft.commitAllowingStateLoss();
} else {
ft.commit();
}
}
}
speziell an der Linie: FragmentTransaction ft = getFragmentManager().beginTransaction();
Hat das Fragment/die Aktivität aus dem Sie den Dialog in den Hintergrund treten, d. h. seine 'onPause' Methode wird aufgerufen? In diesem Fall erwarte ich Probleme und tendiere dazu, solche Probleme zu umgehen, indem ich sicherstelle, dass ich keine Dialoge verwarne, bis "onResume" aufgerufen wird (durch Implementierung des pausierten Handler-Ansatzes [hier] (http://stackoverflow.com)/questions/7992496/how-to-handle-asynctask-onpostexecute-wenn-pausiert-zu-vermeiden-illegalstateexception) oder [hier] (http://stackoverflow.com/questions/8040280/how-to-handle-handler -messages-when-activity-fragment-is-paused) – PJL
@PJL interessanter Punkt. Ich sollte onPause anmelden. Macht Sinn, dass onPause würde aufgerufen werden. Ich gebe Ihrem Ansatz eine Chance. – LuxuryMode