为片段设置参数时应用程序崩溃的原因

时间:2014-09-26 09:41:42

标签: android android-fragments

我正在尝试将从活动转移到片段的参数转换为另一个片段。该应用程序崩溃并说出了膨胀的问题。

这是我的错误日志:

09-26 09:22:03.968    1524-1524/com.example.user.unchained E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.user.unchained, PID: 1524
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.unchained/com.example.user.unchained.HomesActivity}: android.view.InflateException: Binary XML file line #36: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)

代码的相关部分

    final Fragment hf = new HeaderFragment();

    Bundle i = getArguments();
    Bundle ii = new Bundle();

    View header = inflater.inflate(R.layout.fragment_header_fragement, null);
    View footer = inflater.inflate(R.layout.fragment_footer, null);


    mDrawerListView.addHeaderView(header);
    mDrawerListView.addFooterView(footer);

    ii.putString("Id",i.getString("Id"));
    ii.putString("Name",i.getString("Name"));
    ii.putString("ImgUrl",i.getString("ImgUrl"));

    hf.setArguments(ii);

    header.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
        @Override public void onViewDetachedFromWindow(View v) {}
        @Override public void onViewAttachedToWindow(View v) {
            getChildFragmentManager()
                    .beginTransaction()
                    .add(R.id.fragment, hf)
                    .commit();
        }
    });

1 个答案:

答案 0 :(得分:0)

您似乎没有指定根视图。

根据Android documentation

  

public View inflate(int资源,ViewGroup根目录)

     

从指定的位置膨胀新的视图层次结构   xml资源。如果出现错误,则抛出InflateException。

     

参数   resource =要加载的XML布局资源的ID(例如,R.layout.main_page)

     

root =可选视图,作为生成的层次结构的父级。返回膨胀层次结构的根视图。

     

如果提供了root,则这是根视图;否则它是膨胀的XML文件的根。

由于您没有在任何一个语句中定义根视图,因此您将从header作为根视图,然后立即切换到footer作为根视图。