Как отжать спину в котлине
Мое приложение имеет только два базовых действия и несколько фрагментов. Я хочу отобразить предупреждение о выходе, когда пользователь достигает определенного базового фрагмента, нажав кнопку назад, нажмите
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
}
Для получения дополнительной информации вы можете проверить это.