这个问题在这里已经有答案了:
什么是nullpointerexception,如何修复它(12个答案)
两年前关门了。
这不是重复的问题,因为问题的出现是不同的。。因为我只是在尝试做我刚才提到的事情时才体验到这种行为(布局顺序)
我试图通过另一个对话片段创建一个新的对话片段。当我试着这么做的时候 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");
所以我的观点是这样的。。
mainactivity->fragment->dialogfragment->dialogfragment(我正在尝试获取这个)
我试过提到的答案和调侃是错误发生的每一个变化。。。
forgotpswrdsuccesfragment forgotpswrdsuccesfragment=新建forgotpswrdsuccesfragment();forgotpswrdsuccessfragment.show(require().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)
ForgotPasswordDfFragment是一个对话框片段,它在片段上,我在那里调用另一个dialogfragment(ForgotPasswordDfFragment)..现在这个动作抛出了上面提到的eror
为了这个
forgotPswrdSuccessFragment.show(this.getChildFragmentManager(), "Password Reset Failed");
例外是
java.lang.illegalstateexception:尚未附加片段。在android.support.v4.app.fragment.instanceChildFragmentManager(fragment。java:2383)
3条答案
按热度按时间vdgimpew1#
fragmentmanager在附加到活动之前将为空。
所以使用下面的代码,
如果是嵌套片段,请使用
this.getChildFragmentManager()
为你的碎片类其他用途
getActivity().getFragmentManager()
或者getActivity().getSupportFragmentManager()
.x4shl7ld2#
嗨@sha这可能会有帮助:
xbp102n03#
getFragmentManager()
如果片段未附加到上下文,则可能返回null。这可能会通过传递null引用导致未捕获的异常,正如堆栈跟踪已经提到的那样。最直接的方法是 PackagegetFragmentManager()
进入非空状态但是,为了避免代码中出现盲空乘客,请考虑使用
getSupportFragmentManager()
. 此方法不能直接在片段上调用。所以你必须打电话getActivity().getSupportFragmentManager()
或者requireActivity().getSupportFragmentManager()
分别。