NullPointerException: попытка вызвать виртуальный метод «android.app.FragmentTransaction android.app.FragmentManager.begAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 NullPointerException: попытка вызвать виртуальный метод «android.app.FragmentTransaction android.app.FragmentManager.beg

Сообщение Anonymous »

Когда я пытаюсь закрыть диалоговое окно фрагмента, мое приложение иногда аварийно завершает работу.

Вот журнал:

Код: Выделить всё

Process: com.xxx, PID: 9981
java.lang.RuntimeException: Error receiving broadcast Intent { act=xxxx flg=0x10 (has extras) } in xxxxxx
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:893)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5438)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()' on a null object reference
at android.app.DialogFragment.dismissInternal(DialogFragment.java:296)
at android.app.DialogFragment.dismissAllowingStateLoss(DialogFragment.java:277)
at xxxxx.updateStatus(BaseAppCompatActivity.java:96)
at xxxxx.access$000(BaseAppCompatActivity.java:43)
at xxxxx$1.onReceive(BaseAppCompatActivity.java:79)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:883)
xxxxxx.updateStatus(BaseAppCompatActivity.java:96)

эта строка пытается отклонить DialogFragment:

Код: Выделить всё

mDialogFragment.dismissAllowingStateLoss();
В моей активности находится DialogFragment.

Код: Выделить всё

private SimpleBlockedDialogFragment mDialogFragment = SimpleBlockedDialogFragment.newInstance();
Таким образом, mDialogFragment не имеет значения null.

Я показываю диалоговое окно следующим образом:

Код: Выделить всё

FragmentTransaction ft = getFragmentManager().beginTransaction();
mDialogFragment.updateMessage("xxx");
mDialogFragment.show(ft, "block_dialog");
И закройте диалоговое окно следующим образом:

Код: Выделить всё

mDialogFragment.dismissAllowingStateLoss();
Иногда я показываю диалог только один раз, но закрываю его несколько раз. Но я не думаю, что это приведет к сбою.

Вот функция ignoreInternal в DialogFragment:

Код: Выделить всё

void dismissInternal(boolean allowStateLoss) {
if (mDismissed) {
return;
}
mDismissed = true;
mShownByMe = false;
if (mDialog != null) {
mDialog.dismiss();
mDialog = null;
}
mViewDestroyed = 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();
}
}
}
журнал сообщает мне, что getFragmentManager() возвращает значение null. Я не знаю, почему это произошло.

Как правильно закрыть FragmentDialog?


обновление:

Я пробую android.support.v4.app.FragmentTransaction, но все равно получаю исключение.

Код: Выделить всё

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()' on a null object reference
at android.support.v4.app.DialogFragment.dismissInternal(DialogFragment.java:196)
at android.support.v4.app.DialogFragment.dismissAllowingStateLoss(DialogFragment.java:177)
Помощь~

Подробнее здесь: https://stackoverflow.com/questions/373 ... agmenttran
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»