10

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
nommer
  • 2,730
  • 3
  • 29
  • 44
  • 2
    Does your app use any features which aren't available in API 10? – DrYap Aug 09 '13 at 18:02
  • Can you show your xml file. Like DrYap said you are using something which is not available for API 10 and is available for API 16 or introduced in subsequent API's – Manu Aug 09 '13 at 18:03
  • thanks for the comments, yeah I figured it out and posted my answer below. Is there a reference somewhere to know what is not available in API 11 and below? More specifically as in my answer, the ?android:attr values? – nommer Aug 09 '13 at 18:17

3 Answers3

14

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" />
Salim Mahboubi
  • 561
  • 7
  • 25
nommer
  • 2,730
  • 3
  • 29
  • 44
  • 2
    Yes, one simple way to figure out which resource exactly causes the error is to change (temporarily) `target` in `project.properties` file to, say `android-10`. This makes Eclipse to highlight problematic files and lines. – Stan Nov 03 '13 at 15:30
  • Thanks! The answer became much more apparent when I changed a line in my XML file and then Lint flagged three lines as requiring a later API level. Moral of the story: do a random edit on XML files and THEN the errors show up. – Gravitoid Sep 11 '14 at 21:55
0

Are you using ActionBarSherlock or HoloEverywhere? I've experienced this problem a lot when using those libraries and trying to style/theme things.

Basically, some attributes are specified by default in ICS+, but are not specified in older versions of android. So, you have to mirror resources, as shown here: http://actionbarsherlock.com/theming.html

Posting your code for the themes/styles might be helpful for us to see whats wrong.

Synergy807
  • 523
  • 2
  • 6
  • 18
0

Without more code I cannot tell you exactly why the app is failing. All we know is that you might use some feature available only for higher APIs. Post your xml-layouts and maybe your classes.

However, try to include the Support Library. That often solves the problem.

Radu
  • 384
  • 4
  • 15