为包含片段的Viewstub充气

时间:2015-03-30 19:44:58

标签: android android-fragments viewstub

膨胀包含片段的viewstub时是否有任何问题。在crashalytics我很少看到

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

1 个答案:

答案 0 :(得分:2)

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

ViewStub 中的片段有效。

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

您的问题在片段内容中。

为了测试我已经创建了一个进入ViewStub的Fragment,并在即将创建视图时抛出一个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。

您应该在片段类内部进行调试,或者发布其代码。