gpt4 book ai didi

java - 尝试将新的dialogFragment添加到 fragment 上的现有dialogfragmen时,FragmentManager.beginTransaction()在空对象引用上

转载 作者:行者123 更新时间:2023-12-02 10:30:23 25 4
gpt4 key购买 nike

这不是一个重复的问题,因为问题的发生是不同的..因为我只有在尝试完全执行我提到的操作时才会遇到这种行为(明智的布局顺序)

我正在尝试通过另一个对话框 fragment 创建一个新的对话框 fragment 。当我尝试这样做时,它会抛出 error

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.show(DialogFragment.java:142)
<小时/>

这是相关代码

ForgotPasswordFailedFragment forgotPasswordFailedFragment = new ForgotPasswordFailedFragment();
forgotPasswordFailedFragment.show(getFragmentManager(), "Password Reset Failed");
<小时/>

所以我的 View 顺序是这样的..

mainActivity -> fragment -> dialogfragment -> dialogfragment (i'am trying to get this)

我已经尝试过提到的答案,并 mock 每次更改发生的错误......

ForgotPswrdSuccessFragment忘记PswrdSuccessFragment = new ForgotPswrdSuccessFragment();忘记PswrdSuccessFragment.show(requireActivity().getSupportFragmentManager(), "密码重置失败");

这会抛出

 Fragment ForgotPasswordDFragment{725811b} not attached to an activity.
at android.support.v4.app.Fragment.requireActivity(Fragment.java:724)
at *********.SignIn.ForgotPassword.ForgotPasswordDFragment.showSuccessDialog(ForgotPasswordDFragment.java:85)

ForgotPasswordDFragment 是一个位于 fragment 上的对话框 fragment 我正在从 (ForgotPasswordDFragment) 调用另一个对话框 fragment ..现在该操作引发了上述错误

为此

forgotPswrdSuccessFragment.show(this.getChildFragmentManager(), "Password Reset Failed");

异常(exception)是

java.lang.IllegalStateException: fragment 尚未附加。 在 android.support.v4.app.Fragment.instantiateChildFragmentManager(Fragment.java:2383)

最佳答案

FragmentManager 在附加到 Activity 之前将为 null。

所以使用下面的代码,

如果它是嵌套的 Fragment,请使用 this.getChildFragmentManager() 作为您的 fragment 类

否则使用getActivity().getFragmentManager()getActivity().getSupportFragmentManager()

关于java - 尝试将新的dialogFragment添加到 fragment 上的现有dialogfragmen时,FragmentManager.beginTransaction()在空对象引用上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53651683/

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