适用于Leanback的AppCompat主题

10

我打开了旧的Android TV应用程序项目并尝试更新依赖项,将appcompat库更新为27.1.1。我打开了leanback片段,Android Studio警告我BrowseFragment已过时,应该使用BaseSupportFragment代替。其他leanback片段也是如此。然后我将所有片段更改为AppCompat版本(除了LeanbackSettingsFragment,因为没有提供AppCompat版本),然后将我的Activity扩展为AppCompatActivity

完成这些更改后,我构建了应用程序,但当我启动应用程序时,在logcat中看到了以下错误:

无法启动组件信息 {net.swiftzer.trainboard.dev/net.swiftzer.trainboard.main.MainActivity}:java.lang.IllegalStateException: 您需要使用一个Theme.AppCompat主题(或其后代)来运行此活动。

我为应用程序和活动使用的主题都是Theme.Leanback。但我检查了主题是基于平台的本土主题。

我应该坚持使用已弃用的leanback片段类还是leanback库提供了AppCompat主题?leanback库有点不完美。去年我看到leanback库提供了fragments的AppCompat版本,但没有示例项目在使用它们。现在他们将从android.app.Fragment继承的片段类标记为已弃用,但他们没有提供适当的迁移方式。

2个回答

16

如果您的Activity扩展了AppCompatActivity,则无法使用Theme.Leanback。同样,如果要使用support fragments,那么也不能将Activity扩展为android.app.Activity。要使用support fragments,请将Activity扩展为android.support.v4.app.FragmentActivity


7

你不能在使用 Leanback 库时为 Android TV 使用 AppCompat 主题。 你应该扩展你的 BaseActivity 从而使得它继承自 FragmentActivity 来获取 Support 组件的好处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接