Manejando una tarea después de un Fragmento de Cargas

Mi pequeño proyecto de aprendizaje aquí es una aplicación de toma de notas simple que utiliza fragments dynamics para save notas. Tengo un problema cuando se muestra el text cargado de un file ".txt" en un TextView.

La debugging muestra que cuando voy a search mi NoteEditFragment , es nulo. Esta es probablemente la razón por la que mi file no se está traduciendo correctamente a TextView. ¿Cómo hago para invocar la function setText de NoteEditFragment solo después de que el Fragmento entra en existencia? ¿Hay una mejor manera de hacer esto? Intento mantener los fragments solo manejando la IU y usar mi Actividad como un presentador.

La secuencia que no funciona:

//Interfaces override fun noteEditSaveClicked(note: String) { saveNote(note) swapFragments() openNote() } 

La secuencia que funciona (probablemente porque espera hasta que se cargue el Fragmento)

  override fun onStart() { super.onStart() openNote() } 

Código de actividad completo:

 package com.inviscidlabs.kotlinnotes import android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.app.AppCompatActivity import android.view.Menu import android.view.MenuItem import kotlinx.android.synthetic.main.activity_note_home.* import java.io.File class NoteHome : NoteHomeFragmentEvent, NoteEditAction, AppCompatActivity() { //Lifecycle override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_note_home) setSupportActionBar(toolbar) swapFragments() } override fun onStart() { super.onStart() openNote() } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.menu_note_home, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_settings -> true else -> super.onOptionsItemSelected(item) } } //Local Functions private fun openNote(){ var printText = "" File(this.filesDir, "note.txt").buffenetworkingReader().forEachLine { line -> printText += line } val f: NoteHomeFragment? = supportFragmentManager.findFragmentByTag(FragmentIDs.HOME.fragID) as NoteHomeFragment? f?.setNote(printText) } private fun swapFragments() { val replaceFragment = { frag: Fragment, fragTag: String -> supportFragmentManager.beginTransaction().replace(R.id.anh_fragContainer, frag, fragTag).commit() } if (supportFragmentManager.fragments.size > 0) { if (supportFragmentManager.findFragmentByTag(FragmentIDs.NOTEEDIT.fragID) == null) { replaceFragment(NoteEditFragment(), FragmentIDs.NOTEEDIT.fragID) } else { replaceFragment(NoteHomeFragment(), FragmentIDs.HOME.fragID) openNote() } } else { replaceFragment(NoteHomeFragment(), FragmentIDs.HOME.fragID) openNote() } } fun saveNote(noteBody: String){ File(this.filesDir, "note.txt").buffenetworkingWriter().use { out -> out.write(noteBody) } } //Interfaces override fun noteEditSaveClicked(note: String) { saveNote(note) swapFragments() openNote() } override fun addNoteFabClicked() { swapFragments()} } enum class FragmentIDs (val fragID: String){ NOTEEDIT("NoteEditFragment"), HOME("NoteHomeFragment") }