gpt4 book ai didi

android - DialogFragment.dismiss 因 NullPointerException 而崩溃

转载 作者:IT老高 更新时间:2023-10-28 22:21:02 26 4
gpt4 key购买 nike

我正在做一些后台工作并在执行此操作时显示 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();

最佳答案

当您像 Sogger 所说的那样在调用 show() 之前调用 dismiss() 时,也可能会发生这种情况。

在Dialog对象构建之后,在dialog不显示之前,如果(mDialog != null)可以传入,会发生NullPointerException。

当你检查 mDialog 是否为空时,

if (mDialog != null) {
mDialog.dismiss();
mDialog = null;
}

添加更多条件,如下所示,

if ((mDialog != null) && mDialog.isAdded() && mDialog.isResumed()) {
mDialog.dismiss();
mDialog = null;
}

我认为 mDialog.isAdded() 条件可能就足够了...

关于android - DialogFragment.dismiss 因 NullPointerException 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com