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:

 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 

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);

  • ¿Algún modo de saber cuándo una vista de lista se ha desplazado hacia arriba?
  • Diferencias RelativeLayout entre 1,5 y 2,1
  • Android looping infinito ListView?
  • Cómo obtener todos los elementos seleccionados de un ListView?
  • Destruir vista (disposición)
  • Cambiar el color de fondo y color de texto del elemento de fila listview en android
  • Android ListView áreas parciales presionables
  • Cómo desplazarse y desplazarse hasta el último en Appium
  • Obtener el elemento seleccionado de ListView enlazado con SimpleCursorAdapter
  • Spinner eliminar elementos
  • Reciclar vistas en un listview, vale la pena?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.