我正在尝试根据文档here
在片段中实现自定义向后导航但是当我尝试用后退按钮evet代码替换“ //处理后退按钮事件”位时,我的IDE抛出错误,提示“必需:找到OnBackPressedCallback()-> OnBackPressedCallback”
我正在使用appcompat:1.0.2。我有core-ktx:1.0.2'。
实现'androidx.appcompat:appcompat:1.0.2'
实现'androidx.core:core-ktx:1.0.2'
这是我尝试实现onBackPressedDispatcher的方式
val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
patientsActivity.moveToLoginScreen(true) // <-- thing I want to happen when the back button is pressed
}
我在这里想念什么?我该如何实施自定义反向导航?
答案 0 :(得分:0)
OnBackPressedDispatcher
是新的androidx.activity
依赖项的一部分。获得对新库的访问权限的最佳方法是升级Fragments版本:
implementation "androidx.fragment:fragment-ktx:1.1.0-beta01"
通过使用fragment-ktx
工件,您还将获得对activity-ktx
的传递依赖,该依赖关系是文档使用的Kotlin扩展。
答案 1 :(得分:0)
代码问题不在gradle文件上,而在语法上。该文档未提供与给出的Java代码相对应的正确的kotlin代码。
这是创建抽象类对象的正确方法-OnBackPressedCallback
val callback = requireActivity().onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
patientsActivity.moveToLoginScreen(true)
}
})
答案 2 :(得分:0)
具体来说,您需要import androidx.activity.addCallback
,并在应用程序build.gradle中,implementation "androidx.fragment:fragment-ktx:1.1.0-beta01"
答案 3 :(得分:0)
您尚未传递布尔参数,这就是为什么它不起作用的原因。正确的代码如Jian Astrero's answer中所示。另外,您可以使用如下lambda语法:
val callback = requireActivity().onBackPressedDispatcher.addCallback(this, true) {
patientsActivity.moveToLoginScreen(true)
}
请注意,作为第二个参数传递的 true 对于它的工作至关重要。