¿Por qué la configuration de OnClickListener funciona una vez?

Quiero migrar una estructura de proyecto muy sólida que uso para Kotlin. Primero probé lo básico: actividades y transactions de fragments. Parece tan fácil y simple:

class MainActivity : AppCompatActivity(), SomeInterface { override fun onCreate(savedInstanceState: Bundle?) { setContentView(R.layout.activity_main) val mainFragment = supportFragmentManager.findFragmentById(R.id.fragment_main) as MainActionsFragment? ?: MainActionsFragment.newInstance() supportFragmentManager.inTransaction { add(R.id.container_main, mainFragment) } } private val anotherFragment by lazy { supportFragmentManager.findFragmentById(R.id.another_fragment) as AnotherFragment? ?: AnotherFragment.newInstance() } override fun myInterfaceMethod() { replaceFragment(anotherFragment, R.id.container_main) } } class MainActionsFragment : Fragment() { val btnSale: Button by bindView(R.id.btn_sale) val btnVisit: Button by bindView(R.id.btn_visit) override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater!!.inflate(R.layout.fragment_main, container, false) } override fun onResume() { super.onResume() btnSale.setOnClickListener{ _ -> listener.requestAction(SaleType.SALE) } btnVisit.setOnClickListener{ _ -> listener.requestAction(SaleType.VISIT) } } } 

Extensions.kt

 fun AppCompatActivity.replaceFragment(fragment: Fragment, @IdRes frameId: Int) { supportFragmentManager.inTransaction { replace(frameId, fragment) .addToBackStack(fragment.tag) } } inline fun FragmentManager.inTransaction(func: FragmentTransaction.() -> FragmentTransaction) { beginTransaction() .func() .commit() } 

Ahora, MainActionsFragment tiene dos botones. Todo funciona como se esperaba, el primer clic en cualquiera de ellos me lleva al fragment deseado. Sin embargo, una vez que presiono el button Atrás y veo mis dos botones nuevamente, su oyente de clic se ha ido. Esta es más o less la forma estándar de hacer las cosas traducidas a Kotlin, nada extravagante además de sus nuevas características. Intenté mover la configuration de onClickListeners a onCreateView() pero se bloquea:

Causado por: kotlin.KotlinNullPointerException en kotterknife.ButterKnifeKt $ viewFinder $ 7.invoke (ButterKnife.kt: 95) en kotterknife.ButterKnifeKt $ viewFinder $ 7.invoke (ButterKnife.kt) en kotterknife.ButterKnifeKt $ requiere $ 1.invoke (ButterKnife.kt: 104) en kotterknife.ButterKnifeKt $ requirió $ 1.invoke (ButterKnife.kt) en kotterknife.Lazy.getValue (ButterKnife.kt: 125)

Entonces, a pesar de que Kotlin es tan genial, estoy teniendo problemas para hacer lo básico y me desanimo a migrar. ¿Realmente estoy haciendo las cosas mal? ¿O cómo puede ser tan frustrante configurar un simple clic?

Gracias.