Leanback 的 AppCompat 主题

AppCompat theme for Leanback

我打开了旧的 Android TV 应用程序项目并尝试更新依赖项。然后我将 appcompat 库更新到 27.1.1。我打开了 Leanback 片段,Android Studio 警告我 BrowseFragment 已弃用,我应该改用 BaseSupportFragment。其他 Leanback 片段的情况相同。然后我将所有片段更改为 AppCompat 版本(LeanbackSettingsFragment 除外,因为没有提供 AppCompat 版本),然后更改我的活动扩展 AppCompatActivity.

进行这些更改后,我构建了该应用程序,但是当我启动该应用程序时,我在 logcat 中看到此错误:

Unable to start activity ComponentInfo{net.swiftzer.trainboard.dev/net.swiftzer.trainboard.main.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

我用的app和活动的主题都在Theme.Leanback下。但是我查了一下主题是基于平台原生主题

我应该坚持使用已弃用的 leanback 片段 类 还是 leanback 库提供 AppCompat 主题? Leanback 图书馆就像一个半生不熟的图书馆。我看到 leanback 库去年确实提供了一个 AppCompat 版本的片段,但没有示例项目使用它们。现在他们将 android.app.Fragment 扩展的片段 类 标记为已弃用,但他们没有提供正确的迁移方法。

您不能将 Theme.Leanback 用于扩展 AppCompatActivity 的活动。要使用 support fragments,您也不能使用 android.app.Activity 扩展 activity。要使用 支持片段 将 activity 扩展为 android.support.v4.app.FragmentActivity.

您不能将 AppCompat 主题用于带有 Leanback 库的 Android 电视。 您应该扩展 FragmentActivityBaseActivity 以受益于 Support 组件。