App crashes on startup on android API 10 but not on API 16 because of Resources$NotFoundException

android, android-drawable, android-layout, android-linearlayout

Solution

Fixed!!

Looking into it more and it looks like it had something to do with the ArrayAdapter as well as my layout. I was using a custom layout (drawer_list_item.xml) for my ArrayAdapter which had some ICS specific code I am guessing, so I just had to remove some lines from that XML file and the app launched fine on Android API 10 (specifically Android 2.3.4). The lines specifically in my layout file that caused problems was:

android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"

Here is the code in my SherlockFragmentActivity that was causing the layout exception/crash:

m_drawerList.setAdapter(new ArrayAdapter<String>(getSupportActionBar().getThemedContext(),R.layout.drawer_list_item, m_drawerNames));

OLD drawer_list_item.xml code:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"<!-- Deleted line-->
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#fff"
android:background="?android:attr/activatedBackgroundIndicator"<!-- Deleted line-->
android:minHeight="?android:attr/listPreferredItemHeightSmall"/> <!-- Deleted line-->

FIXED drawer_list_item.xml code:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="16dp"
android:textColor="#fff" />

Problem

My app launches and starts fine on my Samsung Galaxy S3 phone running Android 4.1.2, but when I try to test the same app on my Motorola Droid X running Android 2.3.4 the app crashes before anything is even displayed on my Droid X screen. My LogCat is below. Unfortunately, it does not point me to exactly what part of my code it is failing on, but it seems like something to do with my layout because of these exceptions: ``` 08-09 10:43:39.686: E/AndroidRuntime(3192): FATAL EXCEPTION: main 08-09 10:43:39.686: E/AndroidRuntime(3192): android.view.InflateException: Binary XML file line #11: Error inflating class <unknown> 08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: java.lang.reflect.InvocationTargetException` 08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x10102fd a=-1} ``` Log Cat: ``` 08-09 10:43:39.686: E/AndroidRuntime(3192): FATAL EXCEPTION: main 08-09 10:43:39.686: E/AndroidRuntime(3192): android.view.InflateException: Binary XML file line #11: Error inflating class <unknown> 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.LayoutInflater.createView(LayoutInflater.java:518) 08-09 10:43:39.686: E/AndroidRuntime(3192): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.AbsListView.obtainView(AbsListView.java:1456) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ListView.makeAndAddView(ListView.java:1821) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ListView.fillDown(ListView.java:686) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ListView.fillFromTop(ListView.java:754) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.ListView.layoutChildren(ListView.java:1670) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.AbsListView.onLayout(AbsListView.java:1286) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:702) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.layout(View.java:7184) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.ViewRoot.performTraversals(ViewRoot.java:1140) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.os.Handler.dispatchMessage(Handler.java:99) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.os.Looper.loop(Looper.java:130) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.app.ActivityThread.main(ActivityThread.java:3806) 08-09 10:43:39.686: E/AndroidRuntime(3192): at java.lang.reflect.Method.invokeNative(Native Method) 08-09 10:43:39.686: E/AndroidRuntime(3192): at java.lang.reflect.Method.invoke(Method.java:507) 08-09 10:43:39.686: E/AndroidRuntime(3192): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-09 10:43:39.686: E/AndroidRuntime(3192): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-09 10:43:39.686: E/AndroidRuntime(3192): at dalvik.system.NativeStart.main(Native Method) 08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: java.lang.reflect.InvocationTargetException 08-09 10:43:39.686: E/AndroidRuntime(3192): at java.lang.reflect.Constructor.constructNative(Native Method) 08-09 10:43:39.686: E/AndroidRuntime(3192): at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.LayoutInflater.createView(LayoutInflater.java:505) 08-09 10:43:39.686: E/AndroidRuntime(3192): ... 35 more 08-09 10:43:39.686: E/AndroidRuntime(3192): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x10102fd a=-1} 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.content.res.Resources.loadDrawable(Resources.java:1719) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.view.View.<init>(View.java:1951) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.TextView.<init>(TextView.java:453) 08-09 10:43:39.686: E/AndroidRuntime(3192): at android.widget.TextView.<init>(TextView.java:446) 08-09 10:43:39.686: E/AndroidRuntime(3192): ... 38 more 08-09 10:43:42.201: I/Process(3192): Sending signal. PID: 3192 SIG: 9 ```

Original source