I have implemented Navigation Drawer based on a ListView. It works perfectly fine with ICS and above versions of Android. However, on older versions, it crashes with this error:
06-23 15:50:11.570: E/AndroidRuntime(403): Caused by:
android.content.res.Resources$NotFoundException:
File res/drawable/list_selector_background.xml
from xml type drawable resource ID #0x0
I have tried copying this particular xml file from Android sdk to my own project, but that didn't help.
Here's the xml file(abridged):
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#dddddd"
android:choiceMode="singleChoice"
android:divider="@color/gray"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
And the code:
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerLayout.openDrawer(mDrawerList);
The complete stack trace:
Uncaught handler: thread main exiting due to uncaught exception
android.view.InflateException:
Binary XML file line #1: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:513)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at android.widget.AbsListView.obtainView(AbsListView.java:1274)
at android.widget.ListView.makeAndAddView(ListView.java:1668)
at android.widget.ListView.fillDown(ListView.java:637)
at android.widget.ListView.fillFromTop(ListView.java:694)
at android.widget.ListView.layoutChildren(ListView.java:1521)
at android.widget.AbsListView.onLayout(AbsListView.java:1113)
at android.view.View.layout(View.java:6830)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:672)
at android.view.View.layout(View.java:6830)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:6830)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
at android.view.View.layout(View.java:6830)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:6830)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:6830)
at android.view.ViewRoot.performTraversals(ViewRoot.java:996)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at android.widget.TextView.<init>(TextView.java:320)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
at android.view.LayoutInflater.createView(LayoutInflater.java:500)
... 35 more
Caused by: android.content.res.Resources$NotFoundException:
File res/drawable/list_selector_background.xml from drawable resource ID #0x0
at android.content.res.Resources.loadDrawable(Resources.java:1693)
at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
at android.view.View.<init>(View.java:1850)
at android.widget.TextView.<init>(TextView.java:326)
... 39 more
Caused by: android.content.res.Resources$NotFoundException:
File res/drawable/list_selector_background.xml
from xml type drawable resource ID #0x0
at android.content.res.Resources.loadXmlResourceParser(Resources.java:1920)
at android.content.res.Resources.loadDrawable(Resources.java:1688)
... 42 more
The official Google example for Navigation drawer, gives this TextView as part of drawer_list_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
However, with these exact three values of attributes, the application fails on pre-ICS android OSes. I verified by giving my own custom values(anything different from these) and it works like magic on every version.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With