1. 程式人生 > >java.lang.IllegalStateException: FragmentManager is already executing transactions 及 SmartTabLayout複用

java.lang.IllegalStateException: FragmentManager is already executing transactions 及 SmartTabLayout複用

 

 

  在複用 SmartTabLayout  時, 出現了標題所示的錯誤。首先我的場景是Activity下兩個fragment  :A 和 B,A中使用了SmarttabLayout和viewpager結合, B也同樣使用了這個結合, 然後就出現了B中滑動異常或不顯示了, 網上的答案有幾種情況:

  一. viewpager的id不能相同

  二. getFragmentManager() 改為 getChildFragmentManager(), 簡單點說就是即前者只為activity中表層fragment提供服務, 而後者為fragment中的fragment提供服務。

 

  然而都沒有解決我那個情況, 後來慢慢debug, 最終發現將findViewById()前的getActivity()改為getView(), 問題解決了(也需要滿足上面兩種情況)!

兩者區別getView()只提供當前fragment的view, 而getActivity()可以提供整個activity的view。所以建議以後還是用Fragment的getView()來初始化控制元件吧。