2

膨胀包含片段的视图时是否有任何问题。在崩溃分析中,我很少看到

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();
    }
}
4

1 回答 1

3

最近我遇到了同样的问题并进行了测试。

ViewStub 中的片段确实有效。

唯一的区别是 Fragment 将在 ViewStub 上调用 inflate() 方法时开始其生命周期。


您的问题出在片段内容中。

只是为了测试我已经创建了一个片段,它进入 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。

您应该在 Fragments 类中进行调试,或发布其代码。

于 2015-05-26T20:58:01.887 回答