Extensiones y fragments de Kotlin para Android

¿Cómo usar las extensiones de Kotlin para Android con Fragment s? Si los uso dentro onCreateView() , obtengo esta exception NullPointerException :

Causado por: java.lang.NullPointerException: bash de invocar el método virtual 'android.view.View android.view.View.findViewById (int)' en una reference de object nulo

Aquí está el código de fragment:

 package com.obaied.testrun.Fragment import android.os.Bundle import android.support.v4.app.Fragment import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.obaied.acaan.R import kotlinx.android.synthetic.main.fragment_card_selector.* public class CardSelectorFragment : Fragment() { val TAG = javaClass.canonicalName companion object { fun newInstance(): CardSelectorFragment { return CardSelectorFragment() } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { var rootView = inflater?.inflate(R.layout.fragment_card_selector, container, false) btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); } return rootView } } ` 

Las properties sintéticas de Kotlin no son mágicas y funcionan de una manera muy simple. Cuando accede a btn_K , llama a getView().findViewById(R.id.btn_K) .

El problema es que lo estás accediendo demasiado pronto. getView() devuelve null en onCreateView . Intenta hacerlo en el método onViewCreated :

 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); } } 

Está llamando a este btn_K demasiado pronto, ya que en ese momento devuelve un valor nulo y le está dando Excepción del puntero nulo.

Puede usar estas vistas mediante este complemento sintético en el método onActivityCreated() que se llama justo después de onCreateView() del ciclo de vida de Fragment.

 onActivityCreated() { super.onActivityCreated(savedInstanceState) btn_K.setOnClickListener{} } 
  • UNRESOLVED_REFERENCE en widget (TextView) resuelto al elemento error en android-kotlin
  • Obtener una URL en Android Kotlin de forma asíncrona
  • Diseño sintético y personalizado de Kotlin en DialogFragment
  • Obteniendo exception de retrofit El tipo de retorno de método no debe include una variable de tipo o comodín en kotlin
  • La biblioteca de Android no puede comstackr kotlin
  • No se pueden agregar las extensiones de Kotlin para Android a mi proyecto
  • Usar las extensiones de resources de Kotlin para Android usando solo Maven
  • Android Kotlin Extension super calling
  • Kotlin, Java, multidex, Dagger 2, Butterknife y Realm: transformClassesWithJarMergingForDebug: input duplicada: org / jetbrains / annotations / NotNull.class
  • ¿Qué versión (s) de Kotlin debería usar para Android Studio 3.0 Canary 1?
  • Extremadamente lento en autocompletado y análisis de código para proyectos Kotlin en Intellij IDEA