Salve a tutti,
sono nuovo del forum e anche della programmazione su android, per cui non conosco molto le librerie. Sto sviluppando una piccola app e mi sono imbattuto in questo problema. Per la gestione a schermo delle preference estendo la classe PreferenceFragmentCompat. Fin qui tutto ok. Ora ho necessità di inserire una preference di tipo MultiSelectListPreference, modificato opportunamente il file preference.xml lancio l'app e quando clicco sul menu per aprire il fragment con le preference ottengo questo errore:
codice:
Process: it.nsh.android.converter, PID: 30827
android.view.InflateException: Binary XML file line #75: Error inflating class (not found)MultiSelectListPreference
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:300)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:358)
at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:360)
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.addPreferencesFromResource(PreferenceFragmentCompat.java:363)
at it.nsh.android.converter.ConverterPreferenceFragment.onCreatePreferences(ConverterPreferenceFragment.java:67)
at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:215)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:988)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5694)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.preference.MultiSelectListPreference" on path: DexPathList[[zip file "/data/app/it.nsh.android.converter-155.apk"],nativeLibraryDirectories=[/data/app-lib/it.nsh.android.converter-155, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:233)
at android.support.v7.preference.PreferenceInflater.onCreateItem(PreferenceInflater.java:280)
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:289)
************at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:358)
************at android.support.v7.preference.PreferenceInflater.rInflate(PreferenceInflater.java:360)
************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.addPreferencesFromResource(PreferenceFragmentCompat.java:363)
************at it.nsh.android.converter.ConverterPreferenceFragment.onCreatePreferences(ConverterPreferenceFragment.java:67)
************at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:215)
************at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
************at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:988)
************at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1207)
************at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
************at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1572)
************at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:493)
************at android.os.Handler.handleCallback(Handler.java:733)
************at android.os.Handler.dispatchMessage(Handler.java:95)
************at android.os.Looper.loop(Looper.java:146)
************at android.app.ActivityThread.main(ActivityThread.java:5694)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
************at dalvik.system.NativeStart.main(Native Method)
Navigo un pò e scopro che la classe MultiSelectListPreference non è presente nel pacchetto di supporto v7 ma nel v14 così aggiungo al file build.gradle la riga:
codice:
compile 'com.android.support:preference-v14:23.1.0'
Riprovo a lanciare l'app questa volta il fragment con le preference si apre correttamente ma quando clicco sulla preference per aprire la dialog con la list si genera questa eccezione:
codice:
Process: it.nsh.android.converter, PID: 24132
java.lang.IllegalArgumentException: Tried to display dialog for unknown preference type. Did you forget to override onDisplayPreferenceDialog()?
at android.support.v7.preference.PreferenceFragmentCompat.onDisplayPreferenceDialog(PreferenceFragmentCompat.java:565)
at android.support.v7.preference.PreferenceManager.showDialog(PreferenceManager.java:401)
at android.support.v7.preference.DialogPreference.onClick(DialogPreference.java:261)
at android.support.v7.preference.Preference.performClick(Preference.java:938)
at android.support.v7.preference.Preference.performClick(Preference.java:924)
at android.support.v7.preference.Preference$1.onClick(Preference.java:136)
at android.view.View.performClick(View.java:4651)
at android.view.View$PerformClick.run(View.java:19310)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5694)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Ho navigato un pò ma non ho trovato nulla. Qualcuno sa aiutarmi a risolvere il problema?
Grazie