我打开旧的Android TV应用程序项目并尝试更新依赖项。然后我将appcompat库更新为27.1.1。我打开了leanback片段,Android Studio警告我{@ 1}}已弃用,我应该使用BrowseFragment
代替。其他斜背片段的情况也是如此。然后我将所有片段更改为AppCompat版本(BaseSupportFragment
除外,因为没有提供AppCompat版本)然后更改了我的活动扩展LeanbackSettingsFragment
。
在我做了这些更改之后,我构建了应用程序,但是当我启动应用程序时,我在logcat中看到了这个错误:
无法启动活动ComponentInfo {net.swiftzer.trainboard.dev/net.swiftzer.trainboard.main.MainActivity}:java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)
我用于应用和活动的主题都在AppCompatActivity
下。但我检查的主题是基于平台原生主题。
我应该坚持使用已弃用的leanback片段类还是leanback库提供AppCompat主题? leanback库就像一个半生不熟的库。我看到leanback库去年提供了AppCompat版本的片段,但没有样本项目正在使用它们。现在,他们将Theme.Leanback
扩展的片段类标记为已弃用,但它们没有提供正确的迁移方式。
答案 0 :(得分:5)
您不能将 Theme.Leanback 用于扩展 AppCompatActivity 的活动。要使用支持片段,您也不能使用 android.app.Activity 来扩展活动。要使用支持片段,请通过 android.support.v4.app.FragmentActivity 扩展您的活动。
答案 1 :(得分:0)
不允许将AppCompat
主题用于带有Leanback
库的Android TV。
您应该扩展BaseActivity
中的FragmentActivity
,以受益于Support
组件。