Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE in Utils #4

Open
ened opened this issue Jun 4, 2016 · 2 comments
Open

NPE in Utils #4

ened opened this issue Jun 4, 2016 · 2 comments

Comments

@ened
Copy link

ened commented Jun 4, 2016

Just received a crash report on Android 4.1.2:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.app/com.company.app.activity.HomeActivity_}: android.view.InflateException: Binary XML file line #71: Error inflating class com.malinskiy.materialicons.widget.IconButton
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2067)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4794)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by android.view.InflateException: Binary XML file line #71: Error inflating class com.malinskiy.materialicons.widget.IconButton
       at android.view.LayoutInflater.createView(LayoutInflater.java:613)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
       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.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
       at com.company.app.activity.HomeActivity_.setContentView(HomeActivity_.java:51)
       at com.company.app.activity.HomeActivity_.onCreate(HomeActivity_.java:42)
       at android.app.Activity.performCreate(Activity.java:5008)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2031)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4794)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.reflect.InvocationTargetException
       at java.lang.reflect.Constructor.constructNative(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
       at android.view.LayoutInflater.createView(LayoutInflater.java:587)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
       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.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
       at com.company.app.activity.HomeActivity_.setContentView(HomeActivity_.java:51)
       at com.company.app.activity.HomeActivity_.onCreate(HomeActivity_.java:42)
       at android.app.Activity.performCreate(Activity.java:5008)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2031)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4794)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at com.malinskiy.materialicons.Utils.resourceToFile(Utils.java:52)
       at com.malinskiy.materialicons.Iconify.getTypeface(Iconify.java:66)
       at com.malinskiy.materialicons.Iconify.addIcons(Iconify.java:32)
       at com.malinskiy.materialicons.widget.IconButton.init(IconButton.java:38)
       at com.malinskiy.materialicons.widget.IconButton.<init>(IconButton.java:20)
       at java.lang.reflect.Constructor.constructNative(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
       at android.view.LayoutInflater.createView(LayoutInflater.java:587)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
       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.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
       at com.company.app.activity.HomeActivity_.setContentView(HomeActivity_.java:51)
       at com.company.app.activity.HomeActivity_.onCreate(HomeActivity_.java:42)
       at android.app.Activity.performCreate(Activity.java:5008)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2031)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
       at android.app.ActivityThread.access$600(ActivityThread.java:133)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:4794)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)

Seemed to happen on a device called pap5300duo.

Utils#resourceToFile should probably check getResourceAsStreams result.

@Malinskiy
Copy link
Owner

@ened and what do you want the behavior to be in this case? if it's null then the font file is not available which means the user will not see any icons. Any ideas why this happens besides crappy firmware?

@ened
Copy link
Author

ened commented Jun 5, 2016

In case of IO errors, the Iconify class already handles it via a null pointer, so the same should happen here (instead of an Crash).

Yet, detailed error logging of the exception would be great (Log.e)

public static final Typeface getTypeface(Context context) {
    if (typeface == null) {
        try {
            typeface = Typeface.createFromFile(Utils.resourceToFile(context, TTF_FILE));
        } catch (IOException e) {
            return null;
        }
    }
    return typeface;
}

Malinskiy added a commit that referenced this issue Jun 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants