Я хотел бы, чтобы onBackPressedDispatcher иногда поглощал нажатие кнопки «Назад», но я не вижу для этого возможности. что происходит, так это то, что мы только сегодня пытаемся перейти на onBackPressedDispatcher в androidX, но мы уже переопределили onBackPress в действии. поэтому, когда наш onBackPressedDispatcher впоследствии вызывает OnBackPressedCallback, также происходит вызов переопределения действий onBackPressed. мы не хотим этого. onBackpressed следует потреблять на месте. вот что у меня есть до сих пор:
const val TAG = "MyTag"
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first)
MyTester(this)
}
override fun onBackPressed() {
super.onBackPressed()
Log.v(TAG, "Activities class back button Pressed")
}
inner class MyTester(var activity: AppCompatActivity) {
init {
addBackCB()
}
fun addBackCB() {
var callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.v(TAG, "inner class MyTester back button")
}
}
activity.onBackPressedDispatcher.addCallback(activity, callback);
}
}
}
который печатает следующее:
V/MyTag: inner class MyTester back button
V/MyTag: Activities class back button Pressed
если я не вызываю super.onBackPressed(), то диспетчер даже не работает. ему нужен этот звонок.