«Содержимое имеет представление с атрибутом id« android.r.id.list », которое не является классом ListView.» При создании представления списка в фрагменте

Вот проблема. У меня есть список, и он выглядит отлично в здании, но он сломал ошибку. Содержимое имеет представление с атрибутом id «android.r.id.list», который не является классом ListView.

Я не добавил listview в XML, что-то вроде: @android: list, причина, по которой я этого не делал, я мог бы найти несколько примеров, которые им не нужно создавать такой список xml, так что теперь я должен делать ?

Как это исправить? благодаря!

Код для Fragment.java

package com.example.demo3; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.ListFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SimpleAdapter; import android.widget.TextView; public class ContactsFragment extends ListFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View contactLayout = inflater.inflate(R.layout.contacts_layout, container, false); return contactLayout; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Activity currentActivity = getActivity(); SimpleAdapter adapter = new SimpleAdapter(currentActivity, getData(), R.layout.contacts_layout, new String[] { "title", "info", "img" }, new int[] { R.id.friend_name, R.id.friend_sex, R.id.friend_img }); setListAdapter(adapter); } private List<Map<String, Object>> getData() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "G1"); map.put("info", "google 1"); map.put("img", R.drawable.background_login); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G2"); map.put("info", "google 2"); map.put("img", R.drawable.background_login); list.add(map); map = new HashMap<String, Object>(); map.put("title", "G3"); map.put("info", "google 3"); map.put("img", R.drawable.background_login); list.add(map); return list; } private TextView findViewById(int testmessage) { // TODO Auto-generated method stub return null; } } 

Код для XML:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ImageView android:id="@+id/friend_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/friend_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="22px" /> <TextView android:id="@+id/friend_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="13px" /> </LinearLayout> </LinearLayout> 

Обновлено: я добавил

 <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" > </ListView> 

В XML. Хотя изображение / имя / пол показано, но они не входят в список, кажется, что этот список является отдельным элементом. Любая идея позволить мне поместить изображение / имя / пол в макет списка? THXXX!

Я не добавил список в XML

Добавьте ListView с android:id of @android:id/list в ваш макет, где вы хотите, чтобы список отображался.

Или удалите реализацию onCreateView() , чтобы получить унаследованный ListView который вы получаете из ListFragment .

Или измените фрагмент на наследование с Fragment , а не на ListFragment и ListFragment управляйте ListView .

Или измените фрагмент на наследование из Fragment и не пытайтесь отобразить в нем список.

Вы можете раздуть метод View on onCreateView (), в котором ваш ListView и id этого ListView должны быть

 @android:id/list 

И после этого по методу onCreateView ()

 ListView lv = (ListView)contactLayout.findViewById(android.R.id.list);