我希望能够将
如果我不调用
onBackPressedDispatcher
吸收后退按钮的按下事件。但有时我并没有看到这个选项。情况是我们今天正在尝试升级到androidX中的onBackPressedDispatcher
,但我们已经在activity中覆盖了onBackPressd
。所以当我们的onBackPressedDispatcher
之后调用OnBackPressedCallback
时,还会调用activities的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()
,则分发器甚至无法工作。它需要那个调用。