網上說是activity重建的時候,假如fragment還在使用諸如context,就會出現這個問題,比如說突然橫屏,fragment裏面正在訪問網絡接口,使用了 new ProgressDialog(context, R.style.waitting_dialog);來進行等待,就會崩潰,Fragment not attached to a context。可以在fragment內部,使用isAdded()來判斷是否fragment和activity綁定。
這和我碰到的問題不太一樣,我activity沒有重建,也沒橫屏,在初始化的時候就崩潰了,出現這個bug。是因爲viewPager最初就屬於GONE狀態,未被繪製加載,但是fragment已經建立了,使用了context獲取顏色,就會崩潰,fragment not attached to a context.
解決辦法,把viewPager或者包含ViewPager的ViewGroup在layout文件中設置成顯示 VISIBLE,然後在界面加載後,使用
Handle handle = new Handle;
handle.postDelayed(new Runable() {pubic void run() { view.setVisible(View.gone); }}, 200);
這樣獲取顏色或者drawable之類的就可以了,然後網絡框架,等待提示的dialog所需要的context建議使用弱引用