为什么 getOnBackPressedDispatcher() 方法在添加“androidx.navigation:navigation-ui”作为依赖项之前无法解析?

问题描述 投票:0回答:2

我正在尝试自定义 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'

幕后发生了什么?

  • 和Jetifier有关系吗?
  • 它是否会根据声明的依赖项或类似内容更改类?
  • 或者它是 Kotlin 的东西(扩展或者其他东西)?
android-navigation android-jetifier
2个回答
0
投票

所以它是一个 Kotlin 扩展。 Google 的 Bard 提供了答案(多么美好的世界啊:)):

扩展方法

getOnBackPressedDispatcher()
不是
AppCompatActivity
本身的成员。这是导航库提供的扩展方法。


-1
投票

实现“androidx.appcompat:appcompat:1.1.0”

将此依赖项实现到最新版本,这将解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.