Skip to content

Instantly share code, notes, and snippets.

@martyglaubitz
Last active December 8, 2015 14:29
Show Gist options
  • Save martyglaubitz/e9cad652ca819a519292 to your computer and use it in GitHub Desktop.
Save martyglaubitz/e9cad652ca819a519292 to your computer and use it in GitHub Desktop.
Utlity classes to enable the handling of backpressed in Fragments
interface FragmentNavigationManager {
fun onNavigateUp(): Boolean
fun registerUpNavigationListener(upNavigationListener: UpNavigationListener)
fun unregisterUpNavigationListener(upNavigationListener: UpNavigationListener)
}
import android.support.v7.app.AppCompatActivity
import eu.widgetlabs.fleet.core.utility.Collections
import java.util.*
class FragmentNavigationManagerImpl(private val appCompatActivity: AppCompatActivity) : FragmentNavigationManager {
private val listenerStack: MutableList<UpNavigationListener> = ArrayList<UpNavigationListener>(10)
override fun onNavigateUp(): Boolean {
val listener = Collections.lastObject(listenerStack) ?: return false
return listener.onNavigateUp(appCompatActivity.supportFragmentManager, this)
}
override fun registerUpNavigationListener(upNavigationListener: UpNavigationListener) {
listenerStack.add(upNavigationListener)
}
override fun unregisterUpNavigationListener(upNavigationListener: UpNavigationListener) {
listenerStack.remove(upNavigationListener)
}
}
import android.support.v4.app.FragmentManager
interface UpNavigationListener {
fun onNavigateUp(fragmentManager: FragmentManager, fragmentNavigationManager: FragmentNavigationManager): Boolean
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment