二进制XML文件第9行:膨胀类片段错误

12

运行一个包含片段的Activity时,出现膨胀片段错误。

CheckList是一个包含listview和Description片段的Activity,其xml代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent" android:layout_height="match_parent">

        <fragment class="com.uday.honeytest.CheckList$listview"
                android:id="@+id/titles" android:layout_weight="1"
                android:layout_width="0px" android:layout_height="match_parent" />

        <fragment class="com.uday.honeytest.CheckList$Description"
        android:id="@+id/details" android:layout_weight="1"
                android:layout_width="0px" android:layout_height="match_parent"
                android:background="?android:attr/detailsElementBackground" />

    </LinearLayout>

CheckList类是:

public class CheckList extends Activity {

    static int position=0;
    static CheckList check;

    public void onCreate(Bundle saved){

        super.onCreate(saved);
        setContentView(R.layout.checklist);


    }

    public static class listview extends ListFragment {

            View mConverView;
            String[] items;



             @Override
                public void onActivityCreated(Bundle savedInstanceState) {
                    super.onActivityCreated(savedInstanceState);
             }

            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                xxxxxx..
                     return mConverView;
            }
        }
同样地,我下面有一个描述片段。
但是我得到了:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.uday.honeytest/com.uday.honeytest.CheckList}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment

在setContentView的代码行出现了错误。

我的Description片段类是:已编辑:

public static class Description extends Fragment {

        View mConverView;
        String details[];

        public static Description getInstance() {
            Description desc=new Description();
            return desc;

        }

         @Override
            public void onActivityCreated(Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
         }


        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {


            TextView textview=new TextView(getActivity());
            textview.setLayoutParams(new LayoutParams(MarginLayoutParams.WRAP_CONTENT, MarginLayoutParams.WRAP_CONTENT));



            return textview;
        }
    }

我在这里做错了什么??

谢谢


你应该真的发布你的Description类代码。 - RoflcoptrException
请检查我修改过的Description片段类:它仅在CheckList Activity中。 - Uday
2
我尝试了这个例子:http://www.vogella.com/articles/Android/article.html#fragments,但是我遇到了两个问题:
  • 我需要使用android.support.v4.app而不是android.app.Fragment,因为我在API级别8下运行(Android在Android 3.0(API级别11)中引入了片段)
  • 片段声明中的android:layout_marginTop="?android:attr/actionBarSize"与API级别8不兼容-请参见https://dev59.com/WlzUa4cB1Zd3GeqP0zV2
- Paul
3个回答

8

您的活动检查列表应该扩展 FragmentActivity。


谢谢!你节省了我很多时间! - offset

1

我刚刚将包含xml填充的onCreateView代码从listview fragment中移除,并将其移到onActivityCreated方法中,这样它就可以工作了。

The reason may be:

ListFragment有一个默认布局,包含一个单独的列表视图。但是,如果您希望,可以通过从onCreateView(LayoutInflater、ViewGroup、Bundle)返回自己的视图层次结构来自定义片段布局。为此,您的视图层次结构必须包含一个ListView对象,其id为"@android:id/list"(如果在代码中,则为list)。
因此,我的listview扩展了ListFragment,并且不包含xml中的list,我们可以直接在onActivityCreated中设置ListAdapter,而不是在onCreateView中设置。

你可能不需要这样做。我注意到在你的例子中,你的onCreateView方法上面没有@ Override指令。它是否被调用了? - Todd Grigsby
1
这有点误导人,因为你应该选择@spin.goran的答案。 - Prateek

1

<fragment class="com.uday.honeytest.CheckList$Description" 是出现错误的地方。

您确定已经正确输入了完全限定的类名吗?

您尝试过清理项目/修复项目属性吗?

我在那个类中没有看到任何名为Description的东西,这可能是问题所在。

希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接