Int*_*ons 114 android android-fragments android-support-library preferencefragment preference-v7
使用v7首选项支持库中的新PreferenceFragmentCompat:http://developer.android.com/tools/support-library/features.html#v7-preference,我收到此错误
E java.lang.IllegalStateException: Must specify preferenceTheme in theme
E at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:202)
Run Code Online (Sandbox Code Playgroud)
应该设置什么主题?
更新:我尝试过使用
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
正如@Bogato所建议的那样,它看起来并不正确,即使在Lollipop上也看起来非常Holo.
支持库:
原生偏好:
Ger*_*ssy 159
Now one can use the library pretty easy. Here are quickest way to do so, but you should check out the README for more info.
compile 'com.takisoft.fix:preference-v7:27.0.0.0'
You can use either PreferenceFragmentCompat
or PreferenceFragmentCompatDividers
.
(Watch out for the appropriate package name when importing PreferenceFragmentCompat
!)
Set your containing Activity's theme to a variant of @style/PreferenceFixTheme
, like NoActionBar, Light, etc.
For more info and usage tips, go to the project's page.
PS在本节中,您可以找到导致创建库的详细解决方案,但我决定将其删除,因为它可能会令人困惑.如果您对这些步骤感到好奇,您仍然可以在此答案的修订历史中找到它们.
小智 45
您必须在首选项活动的主题中指定preferenceTheme.
例如 :
<style name="SettingsTheme" parent="Theme.AppCompat.NoActionBar">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
Run Code Online (Sandbox Code Playgroud)
PreferenceThemeOverlay是preference-v7支持库附带的默认主题.
Sri*_*ddy 35
似乎谷歌解决了这个问题.我用偏好v14-support版本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>
Run Code Online (Sandbox Code Playgroud)
3)最后,将样式添加到Manifest
android:theme="@style/AppTheme.SettingsTheme"
Run Code Online (Sandbox Code Playgroud)
Gab*_*tti 14
要使用PreferenceFragmentCompat,您必须preferenceTheme
在主题中进行设置:
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以自定义preferenceTheme
用于为每种首选项类型设置的布局样式,而不会影响Activity的其他部分.
Pan*_*che 14
我刚刚在主题中添加了这一行,它在API 19及更高版本上运行完美.
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52082 次 |
最近记录: |