Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface Back {
- fun back()
- }
- interface Exit {
- fun exit()
- }
- interface Navigation : Exit {
- fun navigateTo(fragment: Fragment)
- }
- class MainActivity : Navigation {
- override fun navigateTo(fragment: Fragment) {
- supportFragmentManager.beginTransaction().replace(R.id.fragment_container,fragment).commit()
- }
- // handle системной кнопки back
- override fun onBackPressed() {
- val currentFragmentInContainer = suppportFrgamentManager.fragments.first() as Back
- currentFragmentInContainer.back()
- }
- // Выходим из приложения
- override fun exit() = finish()
- }
- abstract class BaseFragment() : Back {
- protected val navigation by lazy {
- // Получаем нашу mainActivity и кастим к Navigation,чтобы иметь доступ к методам exit() и navigateTo()
- requireActivity() as Navigation
- }
- }
- class MainFragment : BaseFrgament() {
- override fun back() {
- // получаем досутп к protected navigation из BaseFragment
- // Если мы находися на главном фрагменте ,то по нажатии на кнопку back,мы будем выходить из приложения
- navigation.exit()
- }
- }
- class MapFragment : BaseFragment() {
- override fun back() {
- // получаем досутп к protected navigation из BaseFragment
- // Если мы находися на главном фрагменте ,то по нажатии на кнопку back,мы будем переходить на главный фрагмент
- navigation.navigateTo(MainFragment())
- }
- }
- class LoginFragment : BaseFrgament() {
- override fun back() {
- // получаем досутп к protected navigation из BaseFragment
- // Если мы находися на главном фрагменте ,то по нажатии на кнопку back,мы будем переходить на фрагмент с картами
- navigation.navigateTo(MapFragment())
- }
- }
- class UserProfileFragment : BaseFragment() {
- override fun back() {
- // получаем досутп к protected navigation из BaseFragment
- // Если мы находися на главном фрагменте ,то по нажатии на кнопку back,мы будем переходить на главный фрагмент
- navigation.navigateTo(MainFragment())
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement