пользовательская кнопка возврата - Android-навигация - PullRequest
0 голосов
/ 14 октября 2019

У меня есть форма, и я хочу получить подтверждающее сообщение от пользователя, прежде чем пользователь ее покинет.

Я хочу предоставить пользовательскую кнопку возврата, когда пользователь коснется этой кнопки:

android navigation back button

я пробую это:

val onBackPressedCallback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
            }
        }
requireActivity().onBackPressedDispatcher.addCallback(this,onBackPressedCallback)

, но, похоже, работает только для обеспечения настраиваемого поведения возврата для встроенной программной / аппаратной кнопки возврата, а не стрелки назад. кнопка

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 14 октября 2019

Используйте onSupportNavigateUp и замените yourCurrentFragmentID на свой текущий идентификатор фрагмента. Все это должно быть сделано в MainActivity.

 navController = findNavController(R.id.nav_host_fragment)

 setupActionBarWithNavController(navController!!)

 override fun onSupportNavigateUp(): Boolean {
        return when(navController?.currentDestination?.id) {
            R.id.yourCurrentFragmentID -> {
                showDialog()
                true
            }
            else -> navController?.navigateUp()!!
        }
    }

Редактировать

Если ваш фрагмент уже использует onOptionsItemSelected, вы можете обработать логику, проверив itemId.

 override fun onOptionsItemSelected(item: MenuItem): Boolean {
        val id = item.itemId
        if (id == R.id.save) {
           // your save button code logic 
        }else if(id ==android.R.id.home){ 
            // display confirmation message
        }
        return super.onOptionsItemSelected(item)
    }
0 голосов
/ 14 октября 2019

Используйте этот код для установки активности на обратную печать.

override fun onBackPressed() {
        if (isDiscardChanges) {
            discardDialog()
        } else {

            super.onBackPressed()
        }
    }
0 голосов
/ 14 октября 2019

Если вы хотите вернуться только из Activity, то вы можете добавить в AndroidManifest.xml дочерний класс Activity.

android:parentActivityName="Parent_Activity_Name 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...