私はいくつかのバックグラウンド作業を行っており、その間に DialogFragment を表示しています。作業が完了し、関連するコールバックが呼び出されたら、ダイアログを閉じます。すると、Android ソースの NPE が原因でクラッシュが発生します。
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();
}
}
}
具体的には次の行で:FragmentTransaction ft = getFragmentManager().beginTransaction();