11

我正在尝试在片段中使用ListView。但我收到此错误:FATAL EXCEPTION: main java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class。 我的代码:

我的列表片段:

public class whitelist_list extends ListFragment {


    Context mContext;

    @Override
    public void onAttach(Activity activity) {
        mContext = activity;
        Log.i("Event", "onAttach called");
        super.onAttach(activity);
    }

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

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
                "Linux", "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
        return inflater.inflate(R.layout.whitelist_content, container, false);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // Do something with the data
    }

}


whitelist_list newFragment = new whitelist_list();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, newFragment)
.commit();

编辑:解决方案:使用 android:id="@id/android:list" 声明 Listview

4

2 回答 2

17

如果您使用 ListActivity/Fragment,则布局中 ListView 的 id 应为 @android:id/list,因此:在 ListView 中的 whitelist_list.xml (whatever_activityname.xml) 中,将 id 更改为 android:id="@机器人:ID/列表”

<ListView android:id="@android:id/list"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>
于 2013-12-09T00:27:17.497 回答
1

不久前我遇到了这个错误。由于某种原因,布局的 XML 已被修改,因此其中一个组件的类型错误。进入 xml 并查找不属于该项目的“android.R.id.list”。我不知道它是如何改变的,但我想也许是在使用 GUI 编辑器时,我改变了一些不应该列出的东西。如果你没有看到它,发布布局

于 2013-07-27T15:18:56.100 回答