NullPointerException:尝试从空对象引用上的字段’int android.app.Fragment.mContainerId’读取
在Android Lollipop上只有片段上的事务有一些有趣的问题。 当我返回并删除以前添加的片段时发生崩溃。
这是stacktrace:
FATAL EXCEPTION: main Process: com.parkme.consumer, PID: 15560 java.lang.NullPointerException: Attempt to read from field 'int android.app.Fragment.mContainerId' on a null object reference at android.app.BackStackRecord$1.onPreDraw(BackStackRecord.java:1131) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1970) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我如何做交易:
getFragmentManager().beginTransaction() .replace(R.id.list_holder, listFragment) .commit();
R.id.list_holder
我如何删除它:
getFragmentManager().beginTransaction() .remove(listFragment) .commit();
我收到了最后一段代码片段的崩溃。
UPDATE
我删除后它不再崩溃:
Transition slideTransition = TransitionInflater.from(ParkmeApplication.getContext()).inflateTransition(R.transition.slide_right); setExitTransition(slideTransition);
slide_right:
该交易不使用getFragmentManager()
方法而是使用getSupportFragmentManager()
而是从v4.app.Fragment
类扩展。 我从android.app.Fragment
搬出后,现在没有崩溃。
所以,如果你有getFragmentManager()
这种用法,并且你有任何人支持在你的应用程序中使用的库,那么我建议所有人,然后转移到支持经理。 即便它为你工作。 或者你可以像我一样用一些奇怪的bug来击中崩溃。 感谢所有有时间给我建议的人!
我在FragmentManager中不存在FragmentManager
Fragment Transaction时遇到此错误:
fragmentTransaction.hide(fragmentManager.findFragmentByTag("MyTag"));
FragmentManager中不存在带有“MyTag”的FragmentManager
,因此FragmentTransaction
尝试在null Fragment上执行作业。
replace函数删除先前在R.id.list_holder添加的片段并添加新片段。 因此,当您删除片段时,系统无法找到它,因为它已被替换function删除。
我有一个类似的问题,我在向布局中添加第一个片段时调用addToBackStack()
是错误的。 删除它,它运作良好。 显而易见的是,它在更高的Android级别工作,如O
我试图从片段管理器中删除null。
这是实际的代码:
broadcastFragment = null; getSupportFragmentManager().beginTransaction().remove(broadcastFragment).commit();
- Android – Google Drive HTTP请求
- 如何使用Android CountDownTimer倒计时
- android XML视图不在Eclipse中显示ToggleButton
- Android ReactNative java.lang.UnsatisfiedLinkError:可以找到要加载的DSO:libreactnativejni.so
- 从两个日期android之间的Sqllite DB中检索数据
- 我必须以编程方式从android应用程序的manifest.xml中检索权限组
- SOAP – 非常大的XML响应 – OutOfMemoryError
- 电话处于深度睡眠状态时接收音量按键事件
- 如何在listview文件浏览器中删除条目和video文件?