"El contenido tiene vista con el atributo id 'android.r.id.list' que no es una clase ListView." Cuando se crea una vista de lista en un fragmento

Aquí está el problema. Tengo una vista de lista, y se ve bien en el edificio, pero rompió el error. El contenido tiene vista con el atributo id 'android.r.id.list' que no es una clase ListView.

No he añadido la lista en el XML, algo así como: @android: lista, la razón por la que no lo hice es que podría encontrar algunos ejemplos que no necesitan crear tal de la lista de xml, así que ¿qué debo hacer ahora ?

¿Como arreglarlo? ¡Gracias!

Código para el Fragmento.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; } } 

Código para 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> 

Updated: He añadido el

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

En el XML. Aunque la imagen / nombre / sexo ha mostrado, pero no están dentro de la lista, parece que la lista es un elemento aparte. ¿Alguna idea de dejarme poner la imagen / el nombre / el sexo en la disposición de la lista? ¡THXXX!

No he añadido el listview al XML

Agregue un ListView con un android:id de @android:id/list a su diseño, donde desea que aparezca la lista.

O bien, elimine su implementación onCreateView() , para que obtenga el ListView heredado que obtiene de ListFragment .

O bien, cambia tu fragmento para que hereda de Fragment , no ListFragment y administre un ListView por ti mismo.

O, cambie su fragmento para heredar de Fragment y no intente mostrar una lista en él.

Puede inflar su método View on onCreateView () en el que debe mostrar su ListView e id de ListView

 @android:id/list 

Y después de eso en el método onCreateView ()

 ListView lv = (ListView)contactLayout.findViewById(android.R.id.list); 
  • Los recursos referenciados desde el manifiesto no pueden variar según la configuración
  • Cómo cambiar el nombre de la aplicación en NativeScript
  • ¿El análisis de archivos xml en android ocurre en tiempo de ejecución o tiempo de compilación?
  • Cómo cambiar el estilo de texto en el fragmento de preferencia
  • String-arrays de referencia en android strings.xml
  • Cómo analizar XML utilizando el analizador SAX
  • Cambiar el ancho de AutoCompleteTextView en Android
  • Android SAX Parsing: Cómo conservar Newlines desde dentro de una etiqueta CDATA
  • Android: ListView entero cambia el color en el foco, no sólo el elemento secundario ListView
  • Almacenamiento de archivos de prueba en el proyecto de prueba
  • ¿Cómo puedo mostrar dos imágenes lado a lado en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.