Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. package com.sudox.messenger.impls
  2.  
  3. import android.os.Bundle
  4. import androidx.fragment.app.FragmentManager
  5. import com.sudox.messenger.core.controller.AppNavigationController
  6. import com.sudox.messenger.core.fragment.AppFragment
  7.  
  8. internal const val CURRENT_FRAGMENT_TAG = "current_fragment_tag"
  9. internal const val CURRENT_FRAGMENT_KEY = "current_fragment_key"
  10.  
  11. class AppNavigationControllerImpl(
  12. val containerId: Int,
  13. val fragmentManager: FragmentManager
  14. ) : AppNavigationController {
  15.  
  16. override fun showPreviousFragment(): Boolean {
  17. return fragmentManager.popBackStackImmediate()
  18. }
  19.  
  20. override fun showFragment(fragment: AppFragment, addToBackstack: Boolean) {
  21. val transaction = fragmentManager
  22. .beginTransaction()
  23. .replace(containerId, fragment, CURRENT_FRAGMENT_TAG)
  24.  
  25. if (addToBackstack) {
  26. transaction.addToBackStack(null)
  27. }
  28.  
  29. transaction.commit()
  30. }
  31.  
  32. override fun getCurrentFragment(): AppFragment {
  33. return fragmentManager.findFragmentByTag(CURRENT_FRAGMENT_TAG) as AppFragment
  34. }
  35.  
  36. override fun saveState(bundle: Bundle) {
  37. val currentFragment = getCurrentFragment()
  38. fragmentManager.putFragment(bundle, CURRENT_FRAGMENT_KEY, currentFragment)
  39. }
  40.  
  41. override fun restoreState(bundle: Bundle?): Boolean {
  42. if (bundle == null) {
  43. return false
  44. }
  45.  
  46. val fragment = fragmentManager.getFragment(bundle, CURRENT_FRAGMENT_KEY) as AppFragment
  47. showFragment(fragment, false)
  48. return true
  49. }
  50.  
  51. override fun clearBackstack() {
  52. fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement