使用来自v7 Preference Support Library:http://developer.android.com/tools/support-library/features.html#v7-preference的新PreferenceFragmentCompat时,我收到以下错误
E java.lang.IllegalStateException: Must specify preferenceTheme in theme
E at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:202)
应该设定什么主题?
更新:我尝试过使用
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
正如@Bogato所建议的,但它看起来并不正确,即使在棒棒糖上也看起来非常全息。
支持库:
本机首选项:
发布于 2015-08-20 10:03:43
该错误修复以gradle依赖项的形式提供
现在可以很容易地使用这个库了。以下是最快的方法,但您应该查看自述文件以了解更多信息。
1.更新模块的gradle文件:
compile 'com.takisoft.fix:preference-v7:27.0.0.0'
2.使用适当的类作为片段的基类
您可以使用PreferenceFragmentCompat
或PreferenceFragmentCompatDividers
。
(在导入PreferenceFragmentCompat
__时,请注意适当的包名!)
3.使用适当的主题
将包含活动的主题设置为@style/PreferenceFixTheme
的变体,如NoActionBar、Light等。
有关更多信息和使用提示,请访问project's page。
附注:在本节中,您可以找到导致创建该库的详细解决方案,但我决定删除它,因为它可能会令人困惑。如果你对这些步骤很好奇,你仍然可以在这个答案的中找到它们。
发布于 2015-08-18 21:10:48
您必须在首选项活动的主题中指定preferenceTheme。
例如:
<style name="SettingsTheme" parent="Theme.AppCompat.NoActionBar">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
PreferenceThemeOverlay是preference-v7支持库附带的默认主题。
发布于 2017-05-29 15:07:15
看起来谷歌解决了这个问题。我已经使用首选项v14-支持版本25.3.1对此进行了测试
1)将implementation 'com.android.support:preference-v14:25.3.1'
添加到您的Gradle中。
2)在样式中添加PreferenceThemeOverlay.v14.Material
,而不是PreferenceThemeOverlay
。
<style name="AppTheme.SettingsTheme" parent="AppTheme.NoActionBar">
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
</style>
3)最后,将样式添加到清单中
android:theme="@style/AppTheme.SettingsTheme"
https://stackoverflow.com/questions/32070670
复制相似问题