0

我有一个非常基本的应用程序,我试图在 MainActivity 上创建 ListFragment。

我不断收到以下运行时错误:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.proto1.listfragment/com.proto1.listfragment.MainActivity}:android.view.InflateException:二进制 XML 文件第 7 行:膨胀类片段时出错

我有两节课。

第一个是MainActivity.java,如下图:

包 com.proto1.listfragment;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

第二个是与listfragment SectionsList相关的类,如下图:

package com.proto1.listfragment;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

    public class SectionsList extends ListFragment {

        //Create an array to hold the sections
        String sections [] = new String []{
            "Starters", "Mains", "Sides", "Desserts", "Drinks"
        };

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

            //Create array adapter to store list of menu sections
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(inflater.getContext(), android.R.layout.simple_list_item_1,sections);

            //Set list adapter of fragment
            setListAdapter(adapter);

            return super.onCreateView(inflater, container, savedInstanceState);     
        }

    }

然后我有一个名为 activity_main 的 XML 布局文件,如下所示:

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

<fragment 
    android:name = "com.proto1.listfragment.MainActivity"
    android:id="@+id/sectionFrag"
    android:layout_width = "wrap_content"
    android:layout_height = "fill_parent"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    tools:context=".MainActivity" />

我看不出为什么会产生这个错误。有人可以解释一下这个问题吗?非常感谢!

4

2 回答 2

3

FragmentActivity 本身不是 Fragment。相反,它是一种轻松与 Fragments 交互的方式。您在 xml 中调用的 Fragment 应该是 SectionList。

于 2012-11-26T22:47:47.703 回答
2

将以下内容编辑到您的 activity_main xml 文件中

<fragment 
android:name = "com.proto1.listfragment.SectionList"
android:id="@+id/sectionFrag"
android:layout_width = "wrap_content"
android:layout_height = "fill_parent"/>
于 2012-11-26T22:53:13.803 回答