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:
- NullPointerException en android.app.ActivityThread.handleStopActivity
- No se puede iniciar el servicio con null
- NullPointerException que no apunta a ninguna línea en mi código
- ¿Por qué se bloquea mi actividad al pulsar el botón de inicio?
- NullPointerException en onLoaderFinished usando SimpleCursorAdapter
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!
- NullPointerException en android.widget.AbsListView.contentFits (AbsListView.java:722)
- Excepción de puntero nulo iniciando IntentService
- Android - ¿Cómo anular el botón "Atrás" para que no termine () mi actividad?
- Acceder a un método de un fragmento de la actividad ViewPager
- Causa de NullPointerException android.support.v7.widget.RecyclerView.onMeasure
- NullPointer en startIntentSenderForResult, no aplicando V3
- Android java.lang.NullPointerException: println necesita un mensaje
- Error de Firebase debido a una excepción de puntero nulo
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
- ¿Qué es un tema de AppCompat en android?
- ¿Cuál es la diferencia entre usar JDK 7 vs usar JDK 8 con el nivel de cumplimiento del compilador 1.7?