android - Leanback 的 AppCompat 主题

标签 android android-appcompat android-tv leanback

我打开了旧的 Android TV 应用项目并尝试更新依赖项。然后我将 appcompat 库更新到 27.1.1。我打开了 Leanback fragment ,Android Studio 警告我 BrowseFragment 已弃用,我应该改用 BaseSupportFragment。其他 Leanback fragment 的情况相同。然后我将所有 fragment 更改为 AppCompat 版本(LeanbackSettingsFragment 除外,因为没有提供 AppCompat 版本),然后更改我的 Activity 扩展 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.

我用于应用程序和 Activity 的主题都在 Theme.Leanback 下。但是我检查了主题是基于平台原生主题。

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

最佳答案

您不能将 Theme.Leanback 用于扩展 AppCompatActivity 的 Activity 。对于使用support fragments,您也不能使用android.app.Activity 扩展 Activity 。要使用支持 fragment ,请使用android.support.v4.app.FragmentActivity 扩展您的 Activity 。

关于android - Leanback 的 AppCompat 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903669/

相关文章:

android - 将应用更改为使用 AppCompat 后 View 消失

java - 获取特定日期的毫秒数和时间

android - 如何从右到左输入小数值(金钱)?

android - Jetpack 组合底部应用栏深色

android - 无法同时添加 Google Play 服务和 Appcompat-v7 依赖项

android - 如何使用 AppCompat 覆盖复选框颜色

Android TV 无法启动正确的 Activity

android - leanback 版本升级到 25.0.1 导致 guidedStepFragment 崩溃

安卓:PlaybackOverlayFragment 不工作

android - onSurfaceChanged 调用了两次