A few days ago Google introduced the Preference Support Library
(Link). I've just tried to implement it in my application though it seems like it's not working with SwitchPreferences
which is weird because Google states that we can use the same XML-Files as before and explicity says that SwitchPreferences are now available to all API 7+ devices.
Quote (Source)
[...] and add preferences using the same preference XML files (http://goo.gl/wOcIxI), while adding support for elements such as SwitchPreference (previously only available on API 14+ devices) to all API 7+ devices. [...]
Error message
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.package/com.my.package.Main}: android.view.InflateException: Binary XML file line #4: Error inflating class (not found)SwitchPreference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Relevant part is obviously Binary XML file line #4: Error inflating class (not found)SwitchPreference
.
Java code
public class FragmentSettings extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.preferences);
}
}
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="pref_something"
android:summary="Lorem ipsum dolor sit amet"
android:title="Lorem ipsum" />
</PreferenceScreen>
So basically the question is: Am I doing something wrong or is this indeed a bug of the Preference Support Library?
SwitchPreference
added in API level 14. if you are using Preferences Support Library v7, you must use SwitchPreferenceCompat
instead.
<SwitchPreferenceCompat
android:key="pref_something"
android:summary="Lorem ipsum dolor sit amet"
android:title="Lorem ipsum" />