Establecer LayoutManager en un fragment

He creado un Fragmento en el que bash implementar un recyclerView y cargar una list. El problema viene cuando trato de configurar el layoutManager

Error:

java.lang.NullPointerException: bash de invocar el método virtual 'void android.support.v7.widget.RecyclerView.setLayoutManager (android.support.v7.widget.RecyclerView $ LayoutManager)' en una reference de object nulo en com.gn.app. Fragments.StationsFragment.onCreateView (StationsFragment.kt: 37)

No puedo descubrir lo que está mal.

Fragmento:

class StationsFragment : Fragment() { companion object { val TAG: String = StationsFragment::class.java.simpleName fun newInstance() = StationsFragment() } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { activity.title = getString(R.string.title_home) val view = inflater?.inflate(R.layout.fragment_stations, container, false) rcViewStations.layoutManager = LinearLayoutManager(activity) val retrofit = Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .build() val stations = retrofit.create(StationService::class.java) val call = stations.getStations() call.enqueue(object : Callback<ResponseStations> { override fun onResponse(call: Call<ResponseStations>?, response: Response<ResponseStations>?) { if (response?.code() == 200) { loadData(response.body()?.stations) } } override fun onFailure(call: Call<ResponseStations>?, t: Throwable?) { //TODO: Implement error response. } }) return view } private fun loadData(stations: List<StationsItem?>?) { val items = stations?.map { it?.let { Station(name, long, lat) } } rcViewStations.adapter = AdapterStation(items) } } 

Utils

 fun ViewGroup.inflate(layoutId: Int): View { return LayoutInflater.from(context).inflate(layoutId, this, false) } 

Fragmento xml

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.gn.app.Fragments.StationsFragment"> <android.support.v7.widget.RecyclerView android:id="@+id/rcViewStations" android:layout_width="match_parent" android:layout_height="wrap_content" app:behavior_overlapTop="30dp" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </FrameLayout> 

item xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp"> <TextView android:id="@+id/txtStationName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Large" android:transitionName="transitionTitle" tools:text="Name" /> <TextView android:id="@+id/txtStationDistance" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:transitionName="transitionDesc" tools:text="0.00 m" /> <TextView android:id="@+id/txtStationBikes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:transitionName="transitionDesc" tools:text="12" /> <TextView android:id="@+id/txtStationSlots" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:transitionName="transitionDesc" tools:text="22" /> <TextView android:id="@+id/txtStationDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textColor="@color/colorAccent" android:transitionName="transitionPrice" tools:text="Date" /> </LinearLayout> </android.support.v7.widget.CardView> 

rcViewStations es nulo como dice Excepciones. Parece que estás usando las extensiones de Android kotlin que usa getView() internamente. getView () solo puede devolver un valor después de que onCreateView haya finalizado.

Puede hacer toda la lógica de manipulación de vistas en onViewCreated o acceder a RecyclerView utilizando findViewById en su Vista recién creada desde inflater?.inflate(R.layout.fragment_stations, container, false)

He solucionado el problema al configurar el layout dentro de este onActivityCreated lo que tiene sentido porque la vista no se crea.

entonces la class se ve así:

 class StationsFragment : Fragment() { companion object { val TAG: String = StationsFragment::class.java.simpleName fun newInstance() = StationsFragment() } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { activity.title = getString(R.string.title_home) val view = inflater?.inflate(R.layout.fragment_stations, container, false) return view } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) rcViewStations.layoutManager = LinearLayoutManager(activity) val retrofit = Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .build() val stations = retrofit.create(StationService::class.java) val call = stations.getStations() call.enqueue(object : Callback<ResponseStations> { override fun onResponse(call: Call<ResponseStations>?, response: Response<ResponseStations>?) { if (response?.code() == 200) { loadData(response.body()?.stations) } } override fun onFailure(call: Call<ResponseStations>?, t: Throwable?) { //TODO: Implement error response. } }) } private fun loadData(stations: List<StationsItem?>?) { val items = stations?.map { it?.let { Station(name, long, lat) } } rcViewStations.adapter = AdapterStation(items) } } 
  • ¿Cómo hacer que kotlintest trabaje con Spring?
  • ¿Cómo configurar Jacoco con Spek en un proyecto múltiple?
  • No se puede usar el procesador de anotación local en el proyecto Android Kotlin
  • java.lang.IllegalStateException: TextView no debe ser nulo (Android / Kotlin)
  • Llamar a kotlin funciones que son palabras key en java de java?
  • Crear paginador de visualización mediante progtwigción en la barra de tabs, pero el contenido de paginador de vista se desplaza por las tabs
  • Kotlin: No se puede declarar un argumento de tipo mutableListOf en la definición de la class
  • Kotlin agrega escucha personalizada para hacer clic en widgets en Android
  • Kotlin - paraCada
  • ¿Cómo agrupar la statement duplicada en .aplicar en Kotlin?
  • Cosas de Android: NullPointerException al recibir datos a través de UART USB en Raspberry PI 3