gpt4 book ai didi

android - NoSuchMethodError : No virtual method getInsetsController()

转载 作者:行者123 更新时间:2023-12-03 23:59:22 25 4
gpt4 key购买 nike

我将我的应用程序升级到 SDK 30。我看到 FLAG_FULLSCREEN 已弃用。然后,我用这个改变了代码;

final WindowInsetsController insetsController = getWindow().getInsetsController();
if (insetsController != null) {
insetsController.hide(WindowInsets.Type.statusBars());
}
但是当我尝试在 API 26 上运行我的应用程序时出现此错误。
java.lang.NoSuchMethodError: No virtual method getInsetsController()Landroid/view/WindowInsetsController; in class Landroid/view/Window; or its super classes (declaration of 'android.view.Window' appears in /system/framework/framework.jar:classes2.dex)

最佳答案

Google 目前正在开发 Compat 版本的 WindowInsetsContrloller。
这样,您就不需要通过 android API 级别分支 if/else(如@PerracoLabs 的回答中所述)。
在 WindowInsetsContrloller 的 Compat 版本上,我们不需要使用 getWindow().setFlags() 因为 window.insetsController?.hide() 将适用于所有 android 版本。
更新:
他们已经做到了——类 androidx.core.view.WindowInsetsControllerCompat。
您需要使用 androidx.core 1.5.0-alpha02 或更高版本。
我的代码示例:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

WindowCompat.setDecorFitsSystemWindows(window, false)

hideSystemBars()
}

private fun hideSystemBars() {
val insetsControllerCompat = WindowInsetsControllerCompat(window, window.decorView)
insetsControllerCompat.systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
insetsControllerCompat.hide(systemBars())
}

private fun showSystemBars() {
val insetsControllerCompat = WindowInsetsControllerCompat(window, window.decorView)
insetsControllerCompat.show(systemBars())
}

关于android - NoSuchMethodError : No virtual method getInsetsController(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64088784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com