为什么我不能将 CheckBoxPreference 与 SwitchPreference 交换?
Why cant I exchange CheckBoxPreference with SwitchPreference?
我用多个 Preference Categorys
和 CheckBoxPreferences
做了一个简单的 PreferenceScreen
。
<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
(只需将 CheckBoxPreference
的 xml 标签切换为 SwitchPreference
) 我的 design
选项卡出现渲染错误:
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.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.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
的 class。有android.support.v7.preference.SwitchPreferenceCompat
、android.support.v14.preference.SwitchPreference
、原生android.preference.SwitchPreference
、
我用多个 Preference Categorys
和 CheckBoxPreferences
做了一个简单的 PreferenceScreen
。
<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
(只需将 CheckBoxPreference
的 xml 标签切换为 SwitchPreference
) 我的 design
选项卡出现渲染错误:
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.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.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
的 class。有android.support.v7.preference.SwitchPreferenceCompat
、android.support.v14.preference.SwitchPreference
、原生android.preference.SwitchPreference
、