androidandroid-sqliteandroid-4.1-jelly-bean

New Version of my Android App crashes due to malformed xml, inflater fails to inflate textview, but xmlns:android is defined


I've developed a Time Clock application for a device running 4.1.1, my debug version was working on the device while testing.

I made some modifications adding 1 textview and a custom toast view which included and imageview and textview.

When I install the app on the device, it launches and crashes throwing this error:

04-21 17:53:17.623 4542-4542/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zebra.ar05.ztimeclock/com.zebra.ar05.ztimeclock.MainActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class TextView
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
                                                 at android.app.ActivityThread.access$600(ActivityThread.java:130)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
                                                 at android.os.Handler.dispatchMessage(Handler.java:99)
                                                 at android.os.Looper.loop(Looper.java:137)
                                                 at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:511)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                 at dalvik.system.NativeStart.main(Native Method)
                                              Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class TextView
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                 at com.zebra.ar05.ztimeclock.MainActivity.onCreate(MainActivity.java:44)
                                                 at android.app.Activity.performCreate(Activity.java:5081)
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                 at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                 at android.os.Looper.loop(Looper.java:137) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:511) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                 at dalvik.system.NativeStart.main(Native Method) 
                                              Caused by: java.lang.NullPointerException
                                                 at android.support.v7.widget.ResourcesWrapper.getResourcePackageName(ResourcesWrapper.java:254)
                                                 at android.content.res.Resources.initializeRedirectionMap(Resources.java:2320)
                                                 at android.content.res.Resources.<init>(Resources.java:193)
                                                 at android.content.res.Resources.<init>(Resources.java:171)
                                                 at android.support.v7.widget.ResourcesWrapper.<init>(ResourcesWrapper.java:46)
                                                 at android.support.v7.widget.TintResources.<init>(TintResources.java:34)
                                                 at android.support.v7.widget.TintContextWrapper.<init>(TintContextWrapper.java:100)
                                                 at android.support.v7.widget.TintContextWrapper.wrap(TintContextWrapper.java:68)
                                                 at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62)
                                                 at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58)
                                                 at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1029)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1087)
                                                 at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) 
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                 at com.zebra.ar05.ztimeclock.MainActivity.onCreate(MainActivity.java:44) 
                                                 at android.app.Activity.performCreate(Activity.java:5081) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                 at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                 at android.os.Looper.loop(Looper.java:137) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:511) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                 at dalvik.system.NativeStart.main(Native Method) 

Alright found the actual stacktrace my problem is coming from my date textview element here is the xml for that:

    <TextView
    android:id="@+id/date_label"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:textSize="100sp"
    android:textColor="@color/textColor"
    android:text="DATE"/>

The output of an XML validator is:

The prefix "android" for attribute "android:id" associated with an element type "TextView" is not bound.

Literally mind blown right now... Where do I go from here?

I've got the latest support library: compile 'com.android.support:appcompat-v7:25.3.1'

Here is my layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.zebra.ar05.ztimeclock.MainActivity"
android:weightSum="1"
android:background="@color/colorBackground"
android:orientation="vertical">

<DigitalClock
    android:id="@+id/textClock"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:textColor="@color/textColor"
    android:textSize="150sp"
    android:textAlignment="center"
    android:gravity="center_horizontal"/>

<ProgressBar
    android:id="@+id/progress_bar"
    style="?android:attr/progressBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="80sp"
    android:minHeight="100sp"
    android:minWidth="100sp"/>

</LinearLayout>

App runs fine when textview is removed from main layout. Still crashes loading either ImageView or Textview in custom toast... Functions fine in emulator running same OS version. Could this be caused by the custom version of 4.1.1?


Solution

  • I've solved the issue by Removing AppCompatActivity from my main activiy MainActivity extends AppCompatActivity and changed it to MainActivity extends Activity

    and also removing the compile:android.appcompat.v7 reference from my gradle.build file. Apparently the AppCompat libraries weren't supported on the device I was deploying on. What led me to discover this was actually in the stack trace but buried deep.

                                                  Caused by: java.lang.NullPointerException
                                                 at android.support.v7.widget.ResourcesWrapper.getResourcePackageName(ResourcesWrapper.java:254)
                                                 at android.content.res.Resources.initializeRedirectionMap(Resources.java:2320)
                                                 at android.content.res.Resources.<init>(Resources.java:193)
                                                 at android.content.res.Resources.<init>(Resources.java:171)
                                                 at android.support.v7.widget.ResourcesWrapper.<init>(ResourcesWrapper.java:46)
                                                 at android.support.v7.widget.TintResources.<init>(TintResources.java:34)
                                                 at android.support.v7.widget.TintContextWrapper.<init>(TintContextWrapper.java:100)
                                                 at android.support.v7.widget.TintContextWrapper.wrap(TintContextWrapper.java:68)
                                                 at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62)
                                                 at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58)
                                                 at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1029)
                                                 at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1087)
                                                 at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)
                                                 at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675)
                                                 at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                 at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                 at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) 
                                                 at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                 at com.zebra.ar05.ztimeclock.MainActivity.onCreate(MainActivity.java:44) 
                                                 at android.app.Activity.performCreate(Activity.java:5081) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                 at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                 at android.os.Looper.loop(Looper.java:137) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                 at java.lang.reflect.Method.invokeNative(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:511) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                 at dalvik.system.NativeStart.main(Native Method)
    

    A NullPointerException was thrown by android.support.v7.widget.AppCompatTextView that's when I realized I wasn't actually calling the TextView class in my activity_main.xml layout file, because I was using the android.support.v7 library I was actually calling a AppCompatTextView which wasn't support on the device. At least it appears to be this way.