在应用程序清单中设置 'android:enableOnBackInvokedCallback="true"' 中,未为应用程序启用 OnBackInvokedCallback 作为警告

Pra*_*ath 49 android-gesture gesture-navigation android-13

我正在运行 Android 应用程序“Android-13”,在 Logcat 中我看到此警告,如何解决此问题?

OnBackInvokedCallback is not enabled for the application.
Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.
Run Code Online (Sandbox Code Playgroud)

Pra*_*ath 47

这是因为Android手势导航,参考链接在这里

\n

为了帮助预测性后退手势对用户有用且一致,我们通过添加新的 API 并弃用现有的 API,转向用于后退事件处理的提前模型。

\n

新平台 API 和 AndroidX Activity 1.6+ 的更新旨在让您尽可能顺利地从不受支持的 API(KeyEvent#KEYCODE_BACK 和 OnBackPressed)过渡到预测性后退手势。

\n

新平台 API 包括OnBackInvokedCallbackOnBackInvokedDispatcher,AndroidX Activity 1.6+ 通过现有的OnBackPressedCallbackOnBackPressedDispatcherAPI 支持它们。

\n

您可以通过两到四个步骤开始测试此功能,具体取决于您现有的实现。

\n
\n
    \n
  1. 升级到 AndroidX Activity 1.6.0-alpha05。通过升级对 AndroidX Activity 的依赖,OnBackPressedDispatcher当您选择加入预测性后退手势时,已经使用\n API(例如片段和导航\n组件)的 API 将无缝工作。
  2. \n
\n
\n
  // In your build.gradle file:\n    dependencies {\n\n  // Add this in addition to your other dependencies\n  implementation "androidx.activity:activity:1.6.0-alpha05"\n
Run Code Online (Sandbox Code Playgroud)\n
\n
    \n
  1. 选择预测性后退手势。通过在应用程序级别\在 AndroidManifest.xml 中将 EnableOnBackInvokedCallback 标志设置为 true 来选择加入您的应用程序。
  2. \n
\n
\n
<application\n\n    ...\n\n    android:enableOnBackInvokedCallback="true"\n\n    ... >\n\n...\n\n</application>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

如果您的应用不\xe2\x80\x99 拦截返回事件,则您\n步骤已完成。注意:选择加入在 Android 13 中是可选的,在此版本之后将被忽略。

\n
\n
 val onBackPressedCallback = object: OnBackPressedCallback(true) {\n\n   override fun handleOnBackPressed() {\n\n     // Your business logic to handle the back pressed event\n\n   }\n\n }\n\n requireActivity().onBackPressedDispatcher\n\n   .addCallback(onBackPressedCallback)\n
Run Code Online (Sandbox Code Playgroud)\n
\n
    \n
  1. 当您的应用准备好停止拦截系统 Back 事件时,请禁用 onBackPressedCallback 回调。
  2. \n
\n
\n
onBackPressedCallback.isEnabled = webView.canGoBack()\n
Run Code Online (Sandbox Code Playgroud)\n
\n

注意:您的应用可能需要使用平台 API(OnBackInvokedCallback 和 OnBackPressedDispatcher)来实现预测性后退手势。请阅读我们的文档了解详细信息。

\n
\n

  • 您说“您的应用程序可能需要使用[两者]...请阅读我们的文档以了解详细信息。” 您能指出该文档吗?我还没有找到任何关于什么时候需要一个、另一个需要什么、什么时候两者都需要的内容。谢谢。 (2认同)
  • https://developer.android.com/guide/navigation/predictive-back-gesture (2认同)