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?
I've solved the issue by Removing AppCompatActivity from my main activiy
MainActivity extends AppCompatActivityand changed it toMainActivity extends Activityand also removing the
compile:android.appcompat.v7reference 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.A
NullPointerExceptionwas thrown byandroid.support.v7.widget.AppCompatTextViewthat's when I realized I wasn't actually calling theTextViewclass in myactivity_main.xmllayout file, because I was using theandroid.support.v7library I was actually calling aAppCompatTextViewwhich wasn't support on the device. At least it appears to be this way.