大佬教程收集整理的这篇文章主要介绍了android – 尝试commitAllowingStateLoss时的FragmentManager NullPointerException,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:FragmentManager抛出NullPointerException,可能是在调用commitAllowingStateLoss()时.我不明白为什么.
@Override public void onDestroy() { super.onDestroy(); if (getFragmentManager().findFragmentById(R.id.fragment_framelayout_left) != null) { Fragmenttransaction fragmenttransaction = getFragmentManager().begintransaction(); fragmenttransaction.remove(mLeftFragment); fragmenttransaction.commitAllowingStateLoss(); } }
堆栈跟踪:
02-11 12:15:14.162: E/AndroidRuntime(25911): FATAL EXCEPTION: main 02-11 12:15:14.162: E/AndroidRuntime(25911): java.lang.NullPointerException 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1419) 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.os.Handler.handleCallBACk(Handler.java:725) 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.os.Handler.dispatchmessage(Handler.java:92) 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.os.Looper.loop(Looper.java:137) 02-11 12:15:14.162: E/AndroidRuntime(25911): at android.app.ActivityThread.main(ActivityThread.java:5039) 02-11 12:15:14.162: E/AndroidRuntime(25911): at java.lang.reflect.Method.invokeNative(Native Method) 02-11 12:15:14.162: E/AndroidRuntime(25911): at java.lang.reflect.Method.invoke(Method.java:511) 02-11 12:15:14.162: E/AndroidRuntime(25911): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 02-11 12:15:14.162: E/AndroidRuntime(25911): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 02-11 12:15:14.162: E/AndroidRuntime(25911): at dalvik.system.NativeStart.main(Native Method)
因此,对于您的手机架构,使用getFragmentManager()将您的InnerFragment添加到您的Activity中.当Activity彻底销毁(通过后退按钮/完成())时,FragmentManager将为您销毁并释放InnerFragment.
对于您的平板电脑架构,使用getChildFragmentManager()(在最新的支持库中)将您的InnerFragments添加到Fragment.当Fragment彻底破坏时,FragmentManager会为你破坏和释放InnerFragments.
您不必自己管理释放和销毁碎片.我建议记录您的活动和碎片的生命周期事件,以便您可以观察它们的状态并确保正确的行为.
以上是大佬教程为你收集整理的android – 尝试commitAllowingStateLoss时的FragmentManager NullPointerException全部内容,希望文章能够帮你解决android – 尝试commitAllowingStateLoss时的FragmentManager NullPointerException所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。