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

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

Сообщение Гость »


Когда я пытаюсь закрыть FragmentDialog, мое приложение иногда вылетает.
Вот журнал:

Процесс: com.xxx, PID: 9981 java.lang.RuntimeException: ошибка при получении широковещательного намерения { act=xxxx flg=0x10 (есть дополнительные функции) } в xxxxxx в android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:893) в android.os.Handler.handleCallback(Handler.java:739) в android.os.Handler.dispatchMessage(Handler.java:95) в android.os.Looper.loop(Looper.java:148) в android.app.ActivityThread.main(ActivityThread.java:5438) в java.lang.reflect.Method.invoke (собственный метод) по адресу com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод android.app.FragmentTransaction android.app.FragmentManager.beginTransaction() для нулевой ссылки на объект. в android.app.DialogFragment.dismissInternal(DialogFragment.java:296) в android.app.DialogFragment.dismissAllowingStateLoss(DialogFragment.java:277) в xxxxx.updateStatus(BaseAppCompatActivity.java:96) в xxxxx.access$000(BaseAppCompatActivity.java:43) в xxxxx$1.onReceive(BaseAppCompatActivity.java:79) в android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:883) xxxxx.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 ignoreInternal(booleanallowStateLoss) { если (mDismissed) { возвращаться; } mDismissed = правда; mShownByMe = ложь; если (mDialog!= ноль) { mDialog.dismiss(); мДиалог = ноль; } mViewDestroyed = правда; если (mBackStackId >= 0) { getFragmentManager().popBackStack(mBackStackId, FragmentManager.POP_BACK_STACK_INCLUSIVE); mBackStackId = -1; } еще { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.remove(это); если (allowStateLoss) { ft.commitAllowingStateLoss(); } еще { фут.коммит(); } } } log сообщает мне, что getFragmentManager() возвращает значение null. Я не знаю, почему это произошло.
Как правильно закрыть FragmentDialog?
обновление:
Я пробую android.support.v4.app.FragmentTransaction и все равно получаю исключение.

Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод «android.support.v4.app.FragmentTransaction android.support.v4.app.FragmentManager.beginTransaction()» по ссылке на нулевой объект в android.support.v4.app.DialogFragment.dismissInternal(DialogFragment.java:196) в android.support.v4.app.DialogFragment.dismissAllowingStateLoss(DialogFragment.java:177) Помощь~
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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