我打开了旧的 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/