【问题标题】:Why cant I exchange CheckBoxPreference with SwitchPreference?为什么我不能用 SwitchPreference 交换 CheckBoxPreference?
【发布时间】:2016-11-12 17:44:29
【问题描述】:

我用多个Preference CategorysCheckBoxPreferences 制作了一个简单的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 内。如果我保持原样,一切都会很好。

但是,如果我想将CheckBoxPreference 换成SwitchPreference(这应该通过简单地将CheckBoxPreference 的xml 标记换成SwitchPreference 来工作)我的@987654331 中出现渲染错误@标签:

渲染期间引发的异常: android.preference.CheckBoxPreference 不能被强制转换为 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) 

【问题讨论】:

  • 如果您修改后的 XML 在您运行应用程序时有效,并且只有设计选项卡出现问题,那么这很可能是 Android Studio 中的错误。
  • 是的,但它也不能在我的设备上运行......
  • 您应该在那里遇到一些其他错误。 Check LogCat 看看你是怎么崩溃的。
  • @CommonsWare 它说:android.view.InflateException: Binary XML file line #15: Error inflating class (not found)SwitchPreference 然后在 android.support.v7.preference ...
  • 我建议您编辑您的问题。您正在向我们展示您没有使用的代码,并且没有给您错误。相反,您需要发布 正在 给您错误的代码,以及崩溃的完整堆栈跟踪。

标签: android android-studio android-preferences switchpreference


【解决方案1】:

没有名为android.support.v7.preference.SwitchPreference 的类。有android.support.v7.preference.SwitchPreferenceCompatandroid.support.v14.preference.SwitchPreference,还有原生的android.preference.SwitchPreference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2013-09-22
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多