getActivity (). findViewById (R.layout.contacts_list_view) devuelve null

He visto alguna pregunta similar sobre esto pero fue todo por diferentes razones (creo). El código que estoy usando se toma de http://developer.android.com/training . Estoy tratando de construir una simple aplicación de contactos de acuerdo con el tutorial: http://developer.android.com/training/contacts-provider/retrieve-names.html La parte donde estoy recibiendo el error es Configurar el CursorAdapter para el ListView . Este es mi código:

@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); mCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.contacts_list_item, null, FROM_COLUMNS, TO_COLUMN, 0); mContactsList.setAdapter(mCursorAdapter); mContactsList.setOnItemClickListener(this); getLoaderManager().initLoader(0, null, this); } 

Todos los archivos XML se han puesto en su lugar:

contact_list_item.xml:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true"/> 

contact_list_view.xml:

 <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> 

Mi actividad principal consiste en 2 FrameLayout s para los fragmentos que se ponen FrameLayout Este es su 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="vertical" > <FrameLayout android:id="@+id/frag_contacts" android:layout_width="match_parent" android:layout_height="200dp" android:textColor="#0a20a3" > </FrameLayout> <FrameLayout android:id="@+id/frag_contact_details" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#045011" /> </LinearLayout> 

Esta es la onCreate de la actividad:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ninth); if (findViewById(R.id.frag_contacts) != null) { if (savedInstanceState != null) return; ContactsFragment contactsFrag = new ContactsFragment(); getFragmentManager().beginTransaction().add(R.id.frag_contacts, contactsFrag).commit(); } } 

también, este es el onCreateView del fragmento:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.contacts_list_view, container, false); } 

Ahora, lo siento por el largo post, algo de él podría ser innecesario, pero el problema es que en el primer fragmento, getActivity().findViewById(R.layout.contacts_list_view) devuelve null todo el tiempo! No sé qué más hacer. ¿de qué otra manera puedo cargar datos en la lista, y qué está mal aquí? ¡Gracias por adelantado!

tienes que cambiar

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

con

 mContactsList = (ListView) getView().findViewById(R.id.contacts_list_view); 

Puesto que el ListView pertenece a la vista usted vuelve dentro onCreateView.

Cambia esto

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

a

 mContactsList = (ListView) getView().findViewById(R.id.contacts_list_view); 

Editar:

 <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+idlist" 

Y

  mContactsList = (ListView) getView().findViewById(R.id.list); 

reemplazar

 mContactsList = (ListView) getActivity().findViewById(R.layout.contacts_list_view); 

a

 mContactsList = (ListView) getView().findViewById(R.id.list); 

contact_list_view.xml debería cambiarse como sigue

 <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="**@+id/list**" android:layout_width="match_parent" android:layout_height="match_parent"/> 

Si está intentando hacer getActivity (). FindViewById (R.id.contacts_list_view) en onCreateView, devolverá null, porque la Vista de Fragmento no se ha creado aún. Intenta hacer eso en onResume y volverá la vista:

 @Override public void onResume() { super.onResume(); mContactsList = (ListView) getActivity().findViewById(R.id.contacts_list_view); } 

Tienes que esperar hasta que el Fragment esté unido a la Activity . Usted puede hacer que onAttach(Activity) en su clase Fragment

  • Android: this.getApplication () devuelve el puntero NULL
  • "Java.lang.NullPointerException" al intentar instalar Android SDK
  • java.lang.NullPointerException: Intenta invocar el método de interfaz 'OnColorChangeListener.colorChanged (java.lang.String)' en una referencia de objeto nulo
  • Advertencias / avisos de nullpointer de estudio de Android en la vista de código
  • ¿Puede la intención recibida por un BroadcastReceiver ser nula?
  • Facturación en aplicaciones v3 imposible de consultar elementos sin conexión de red o en modo avión / vuelo
  • ¿Qué puedo hacer para solucionar un error de excepción de puntero nulo de Android SDK?
  • Se ha producido un error interno durante: "Lanzamiento del proyecto". Java.lang.NullPointerException
  • Excepción de puntero nulo de TimePicker al pulsar los botones más o menos
  • No se puede inyectar vista a clases personalizadas con RoboGuice
  • Service.startForeground () lanza NullPointerException cuando se ejecuta con ServiceTestCase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.