4

PreferenceScreen을 복수 Preference CategorysCheckBoxPreferences으로 간단하게 만들었습니다.SwitchPreference로 CheckBoxPreference를 교환 할 수없는 이유는 무엇입니까?

<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 안에 있습니다. 내가 모든 것을 떠나는 것처럼 모든 것이 잘 작동합니다.

그러나 나는 내 design 탭에 렌더링 오류를 받고 있어요 (단순히 SwitchPreferenceCheckBoxPreference에 대한 XML 태그를 전환하여 작동합니다)를 SwitchPreference 하나 CheckBoxPreference을 전환하려면 :

예외 렌더링 동안 제기 : android.preference.CheckBoxPreference이 android.preference.GenericInflater $ 학부모 캐스트 할 수없는

스택 추적 :

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)  
+0

앱을 실행할 때 수정 된 XML이 작동하고 디자인 탭 만 불평하면 Android Studio의 버그 일 가능성이 큽니다. – CommonsWare

+0

네,하지만 내 장치에서도 작동하지 않습니다 ... – user343037

+0

거기에 다른 오류가 표시되어야합니다. [LogCat 확인] (http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this) 어떻게 충돌하고 있는지 확인하십시오. – CommonsWare

답변

5

android.support.v7.preference.SwitchPreference이라는 클래스가 없습니다. android.support.v7.preference.SwitchPreferenceCompat, android.support.v14.preference.SwitchPreference 및 네이티브 android.preference.SwitchPreference이 있습니다.

+0

덕분에 많이, 그 중 하나를 그리워 :) – user343037