我打开了旧的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
继承的片段类标记为已弃用,但他们没有提供适当的迁移方式。