天天看點

kotlin使用viewpager+fragment報錯 java.lang.IllegalStateException: Fragment already added

遇到一個奇怪的問,kotlin使用viewpager+fragment報錯 java.lang.IllegalStateException: Fragment already added ,按理說不應該有錯的,可是偏偏一啟動就報錯挂掉了。網上搜别人的都是說什麼判斷先fragment示範isadd()再添加什麼的,都不符合我的情況,因為我都沒有add或者commit的,是直接用viewpager+fragmentList的,是以不存在那些問題。後面經過研究,在各個地方logcat輸出,偶然發現,在onCreateView方法裡面輸出view的System.identityHashCode是等于0的,判斷應該是生命周期的問題,就是界面view還沒初始化完成就使用view的結果,按理說應該報空指針NullPointerException之類的才是,可是偏偏報出的是 java.lang.IllegalStateException: Fragment already added 什麼鬼的,

因為kotlin裡面是直接用view的id去使用設定view的,不用findviewbyid啥的,我是直接在onCreateView方法裡面用view的id去使用設定了,後面換成在onActivityCreated裡面去設定view就行了。很奇怪,一旦正确了一次之後,就算再換回onCreateView方法裡面去設定也不會報錯崩潰了,clean projrect也不會再崩潰了。在此記錄一下這個奇怪的問題。