Как отжать спину в котлине

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

override fun onBackPressed() {
        if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
          drawer_layout.closeDrawer(GravityCompat.START)

        } else {
         // super.onBackPressed()
            AlertDialog.Builder(this)
                .setTitle("Exit Alert")
                .setMessage("Do You Want To Exit Petals App?")
                .setPositiveButton(android.R.string.ok) { dialog, whichButton ->
                    super.onBackPressed()
                }
                .setNegativeButton(android.R.string.cancel) { dialog, whichButton ->

                }
                .show()

        } 

я использовал addtosatck для каждого фрагмента

1 ответ

Решение

Сначала проверьте видимый фрагмент

val currentFragment =this@ActivityName.supportFragmentManager.findFragmentById(R.id.Your_id)
        if(currentFragment is FragmentName)
        {
         // AlertDialog()
        }

в заключение

override fun onBackPressed() 
{
        if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
          drawer_layout.closeDrawer(GravityCompat.START)

        } else 
        {

            val currentFragment =this@ActivityName.supportFragmentManager.findFragmentById(R.id.Your_id)
            if(currentFragment is SpecificFragmentName)
            {
               AlertDialog.Builder(this@ActivityName)
                    .setTitle("Exit Alert")
                    .setMessage("Do You Want To Exit Petals App?")
                    .setPositiveButton(android.R.string.ok) { dialog, whichButton ->
                        super.onBackPressed()
                    }
                    .setNegativeButton(android.R.string.cancel) { dialog, whichButton ->

                    }
                    .show()
            }
            else{
            super.onBackPressed()
            }


    }
}

Вы можете просто:

    val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
        // Handle the back button event
    }

Для получения дополнительной информации вы можете проверить это.

Другие вопросы по тегам