2015-03-30 88 views
2

膨脹包含片段的viewstub時是否存在任何問題?在crashalytics我很少看到膨脹包含片段的Viewstub

Fatal Exception: android.view.InflateException 
Binary XML file line #2: Error inflating class fragment 

造成

Caused by java.lang.IllegalStateException 

行動是由一個onclick觸發,如下圖所示。

public void openPlayer() { 
    if (mSlidingLayout != null) { 
     if (mSlidingLayout.findViewById(R.id.viewer_stub) != null) { 
      ViewStub stub = (ViewStub) mSlidingLayout.findViewById(R.id.viewer_stub); 
      stub.inflate(); 
     } 
     mSlidingLayout.expandPanel(); 
    } 
} 

回答

2

最近我遇到了同樣的問題,並將其投入測試。

ViewStub內部的一個片段確實是的工作。

唯一的區別是,在ViewStub上調用inflate()方法時,Fragment將開始其生命週期。


你的問題是在片段內容。

只是爲了測試我已經創建了一個碎片,進入ViewStub內部,並在即將創建視圖時拋出RTE。

public class UserSetupFragment extends Fragment { 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     System.out.println("Create View"); 
     throw new RuntimeException("Test"); 
    } 

} 

在我收到以下異常控制檯:

01-02 06:48:19.260: E/AndroidRuntime(31533): android.view.InflateException: Binary XML file line #6: Error inflating class fragment 

正如你所看到的,表被成功返回視圖的事情之前崩潰,您將收到一個InflateException。

您應該在片段類中進行調試,或者發佈其代碼。

+0

這個問題似乎發生在野外0.001%的時間。我懷疑這可能與膨脹不會立即發生有關,但我仍然不確定。感謝您的信息,非常有趣。 – 2015-05-27 14:24:14