android – 为什么我不能用SwitchPreference交换CheckBoxPreference?

我做了一个简单的PreferenceScreen,有多个Preference Categorys和CheckBoxPreferences.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="General">

        <CheckBoxPreference
            android:title="GPS"
            android:key="gps_preference"
            android:summary="Enales the GPS tracking of your device"
            android:defaultValue="true"
            ></CheckBoxPreference>

        <SwitchPreference
        android:title="WLAN"
        android:key="wlan_preference"
        android:summary="Enables the WLAN usage"
        android:defaultValue="true"></SwitchPreference>

        <CheckBoxPreference
            android:title="Benachrichtigungen"
            android:key="benachrichtigung_preference"
            android:summary="Enables the Push messages"
            android:defaultValue="true"
            ></CheckBoxPreference>

    </PreferenceCategory>
</PreferenceScreen>

此首选项屏幕位于android.support.v7.preference.PreferenceFragmentCompat中.如果我像往常一样离开,那一切都很好.

但是,如果我想为SwitchPreference切换一个CheckBoxPreference(这应该只需通过SwitchPreference切换CheckBoxPreference的xml标签)我在设计选项卡中出现渲染错误

Exception raised during rendering:
android.preference.CheckBoxPreference cannot be cast to
android.preference.GenericInflater$Parent

堆栈跟踪:

android.view.InflateException: Binary XML file line #15: Error inflating class (not found)SwitchPreference
                                                                               at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:301)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:359)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:361)
                                                                               at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:167)
                                                                               at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
                                                                               at android.support.v7.preference.PreferenceManager.inflateFromresource(PreferenceManager.java:115)
                                                                               at android.support.v7.preference.PreferenceFragmentCompat.setPreferencesFromresource(PreferenceFragmentCompat.java:424)
                                                                               at com.julianriegraf.app2night.SettingsFragment.onCreatePreferences(SettingsFragment.java:22)
                                                                               at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:216)
                                                                               at android.support.v4.app.Fragment.performCreate(Fragment.java:2062)
                                                                               at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1051)
                                                                               at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:795)
                                                                               at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:835)
                                                                               at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:676)
                                                                               at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
                                                                               at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:532)
                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                            Caused by: java.lang.classNotFoundException: Didn't find class "android.support.v7.preference.SwitchPreference" on path: DexPathList[[zip file "/data/app/com.julianriegraf.app2night-2/base.apk"],nativeLibraryDirectories=[/data/app/com.julianriegraf.app2night-2/lib/x86,/vendor/lib,/system/lib]]
                                                                               at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                               at java.lang.classLoader.loadClass(ClassLoader.java:511)
                                                                               at java.lang.classLoader.loadClass(ClassLoader.java:469)
                                                                               at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:233)
                                                                               at android.support.v7.preference.PreferenceInflater.onCreateItem(PreferenceInflater.java:281)
                                                                               at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:290)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:359)
                                                                               at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:361)
                                                                               at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:167)
                                                                               at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
                                                                               at android.support.v7.preference.PreferenceManager.inflateFromresource(PreferenceManager.java:115)
                                                                               at android.support.v7.preference.PreferenceFragmentCompat.setPreferencesFromresource(PreferenceFragmentCompat.java:424)
                                                                               at com.julianriegraf.app2night.SettingsFragment.onCreatePreferences(SettingsFragment.java:22)
                                                                               at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:216)
                                                                               at android.support.v4.app.Fragment.performCreate(Fragment.java:2062)
                                                                               at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1051)
                                                                               at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:795)
                                                                               at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:835)
                                                                               at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:676)
                                                                               at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
                                                                               at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:532)
                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

解决方法

没有名为android.support.v7.preference.SwitchPreference的类.有android.support.v7.preference.SwitchPreferenceCompat,android.support.v14.preference.SwitchPreference和原生的android.preference.SwitchPreference.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...