ArrayAdapter en Fragmento – Android
Tengo un error que no sé por qué. Estoy poblando ListView con adaptador de matriz de cadena en fragmento. Estoy utilizando este fragmento como pantalla principal que se mostrará en la actividad principal Este es mi código
public class HomePage extends Fragment { private ListView lvHomePage; private String[] items; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home_page, container, false); items = getActivity().getResources().getStringArray(R.array.test); lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage); lvHomePage.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_list_item_1 , items)); return view; } }
Consigo este error de salida:
- ¿Por qué el listview.setAdapter (_adapter) bloquea dos veces la aplicación?
- Generar listview desde JSON en android
- Gran número de TextViews un éxito de rendimiento? ¿Debo cambiar a ListView en lugar de usar Scrollview?
- Inflar diseño en ListItem basado en la variable específica ListItem
- Cómo finalizar una actividad de una clase de adaptador ListView?
09-18 21:07:27.315: E/AndroidRuntime(3839): FATAL EXCEPTION: main 09-18 21:07:27.315: E/AndroidRuntime(3839): Process: com.kiko.bmgu.crnobelo, PID: 3839 09-18 21:07:27.315: E/AndroidRuntime(3839): java.lang.RuntimeException: Unable to start activity ComponentInfo com.kiko.bmgu.crnobelo/com.kiko.bmgu.crnobelo.activities.MainActivity}: java.lang.NullPointerException 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)\ 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.access$800(ActivityThread.java:135) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.os.Handler.dispatchMessage(Handler.java:102) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.os.Looper.loop(Looper.java:136) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.main(ActivityThread.java:5017) 09-18 21:07:27.315: E/AndroidRuntime(3839): at java.lang.reflect.Method.invokeNative(Native Method) 09-18 21:07:27.315: E/AndroidRuntime(3839): at java.lang.reflect.Method.invoke(Method.java:515) 09-18 21:07:27.315: E/AndroidRuntime(3839): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 09-18 21:07:27.315: E/AndroidRuntime(3839): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 09-18 21:07:27.315: E/AndroidRuntime(3839): at dalvik.system.NativeStart.main(Naive Method) 09-18 21:07:27.315: E/AndroidRuntime(3839): Caused by: java.lang.NullPointerException 09-18 21:07:27.315: E/AndroidRuntime(3839): at com.kiko.bmgu.fragments.HomePage.onCreateView(HomePage.java:25) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.Fragment.performCreateView(Fragment.java:1700) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.BackStackRecord.run(BackStackRecord.java:684) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.Activity.performStart(Activity.java:5240) 09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 09-18 21:07:27.315: E/AndroidRuntime(3839): ... 11 more
- Reproducción de audio desde URI Dentro de ListView, pero Seekbar no se está actualizando en el elemento ListView de Android
- ¿Cómo implementar una lista interminable con RecyclerView?
- Cómo controlar ListView con el patrón MVP para Android
- Eliminar elemento de la lista personalizada al pulsar el botón
- Deshabilitar elementos de vista de lista con selector y isEnabled ()
- Cómo ajustar la altura de ListView cuando hay ExpandableListView incrustado en ListView
- Cómo utilizar la funcionalidad de búsqueda en la vista de lista personalizada en Android
- Establecer un color de fondo en un elemento ListView seleccionado en android
lvHomePage
debe ser nulo. Utilizar lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
en lugar.
Prueba de esta manera
private ListView lvHomePage; private String[] items; private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home_page, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); items = view.getResources().getStringArray(R.array.test); lvHomePage = (ListView) view.findViewById(R.id.lvHomePage); lvHomePage.setAdapter(new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_list_item_1 , items)); ... }
El problema está dentro de lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage);
Que está mal que debe obtener la vista de la raíz es view
no la actividad por lo que debe ser como este
lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
- Icono de pestaña que no se muestra
- Activar / desactivar el sonido y la vibración del teclado programáticamente