Leanback的AppCompat主题

Eri*_* Li 5 android android-appcompat android-tv leanback

我打开了旧的Android TV应用程序项目,并尝试更新依赖项。然后,我将appcompat库更新为27.1.1。我打开了leanback片段,Android Studio警告我BrowseFragment已弃用,应BaseSupportFragment改为使用。其他回扫片段的情况相同。然后,我将所有片段更改为AppCompat版本(除非LeanbackSettingsFragment没有提供AppCompat版本),然后将我的Activity扩展更改为AppCompatActivity

进行这些更改之后,我构建了该应用程序,但是当我启动该应用程序时,我在logcat中看到此错误:

无法启动活动ComponentInfo {net.swiftzer.trainboard.dev/net.swiftzer.trainboard.main.MainActivity}:java.lang.IllegalStateException:此活动需要使用Theme.AppCompat主题(或后代)。

我用于该应用程序和活动的主题都在下Theme.Leanback。但是我检查了主题是否基于平台本机主题。

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

Roh*_*man 9

您不能将Theme.Leanback用于扩展AppCompatActivity的活动。要使用支持片段,您也无法使用android.app.Activity扩展活动。要使用支持片段,请使用android.support.v4.app.FragmentActivity扩展您的活动。


小智 7

您不能将AppCompat主题用于带Leanback库的 Android TV。您应该扩展您的BaseActivity功能FragmentActivity以从组件中受益Support