我正在尝试自定义 JetPack Navigation 的
onBackPress
行为。虽然我找到了解决方案我只是好奇在以下场景中幕后发生了什么:
我的活动的初始状态是
MyActivity extends androidx.appcompat.app.AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getOnBackPressedDispatcher().addCallback(...); // <--- Method is unresolved
}
}
为什么在我将以下依赖项添加到 build.gradle 后,
getOnBackPressedDispatcher()
方法正在被解析:
implementation 'androidx.navigation:navigation-fragment:2.1.0'
implementation 'androidx.navigation:navigation-ui:2.1.0'
幕后发生了什么?
所以它是一个 Kotlin 扩展。 Google 的 Bard 提供了答案(多么美好的世界啊:)):
扩展方法:
getOnBackPressedDispatcher()
不是AppCompatActivity
本身的成员。这是导航库提供的扩展方法。
实现“androidx.appcompat:appcompat:1.1.0”
将此依赖项实现到最新版本,这将解决问题。