Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Inflation crash when using Calligraphy #123

Closed
nathanielwolf opened this issue Feb 9, 2015 · 4 comments
Closed

Inflation crash when using Calligraphy #123

nathanielwolf opened this issue Feb 9, 2015 · 4 comments

Comments

@nathanielwolf
Copy link

The following crash occurs on the first view inflation unless CalligraphyConfig.Builder#disableCustomViewInflation() is called during initialization.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.couchsurfing.mobile.debug/com.couchsurfing.mobile.ui.MainActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class com.couchsurfing.mobile.ui.home.HomeView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class com.couchsurfing.mobile.ui.home.HomeView
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:206)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:297)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.couchsurfing.mobile.ui.ScreenConductor.inflateLayout(ScreenConductor.java:226)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:221)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:207)
at com.couchsurfing.mobile.ui.ScreenConductor.createViewFromScreen(ScreenConductor.java:124)
at com.couchsurfing.mobile.ui.ScreenConductor.showScreen(ScreenConductor.java:75)
at com.couchsurfing.mobile.ui.base.BaseViewActivity.showScreen(BaseViewActivity.java:78)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.showScreen(BaseActivityPresenter.java:347)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.showScreen(MainActivityBlueprint.java:158)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.onLoad(BaseActivityPresenter.java:167)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.onLoad(MainActivityBlueprint.java:312)
at mortar.Presenter$1.onLoad(Presenter.java:34)
at mortar.RealActivityScope.doLoading(RealActivityScope.java:153)
at mortar.RealActivityScope.register(RealActivityScope.java:68)
at mortar.Presenter.takeView(Presenter.java:73)
at com.couchsurfing.mobile.ui.base.BaseActivity.onPostCreate(BaseActivity.java:182)
at com.couchsurfing.mobile.ui.MainActivity.onPostCreate(MainActivity.java:143)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1150)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
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:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:206)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:297)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.couchsurfing.mobile.ui.ScreenConductor.inflateLayout(ScreenConductor.java:226)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:221)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:207)
at com.couchsurfing.mobile.ui.ScreenConductor.createViewFromScreen(ScreenConductor.java:124)
at com.couchsurfing.mobile.ui.ScreenConductor.showScreen(ScreenConductor.java:75)
at com.couchsurfing.mobile.ui.base.BaseViewActivity.showScreen(BaseViewActivity.java:78)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.showScreen(BaseActivityPresenter.java:347)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.showScreen(MainActivityBlueprint.java:158)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.onLoad(BaseActivityPresenter.java:167)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.onLoad(MainActivityBlueprint.java:312)
at mortar.Presenter$1.onLoad(Presenter.java:34)
at mortar.RealActivityScope.doLoading(RealActivityScope.java:153)
at mortar.RealActivityScope.register(RealActivityScope.java:68)
at mortar.Presenter.takeView(Presenter.java:73)
at com.couchsurfing.mobile.ui.base.BaseActivity.onPostCreate(BaseActivity.java:182)
at com.couchsurfing.mobile.ui.MainActivity.onPostCreate(MainActivity.java:143)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1150)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.IllegalArgumentException: No inject registered for members/com.couchsurfing.mobile.ui.home.HomeView. You must explicitly add it to the 'injects' option in one of your modules.
at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:302)
at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:279)
at mortar.Mortar.inject(Mortar.java:93)
at com.couchsurfing.mobile.ui.home.HomeView.(HomeView.java:25)
at java.lang.reflect.Constructor.constructNative(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:206)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:297)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.couchsurfing.mobile.ui.ScreenConductor.inflateLayout(ScreenConductor.java:226)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:221)
at com.couchsurfing.mobile.ui.ScreenConductor.createView(ScreenConductor.java:207)
at com.couchsurfing.mobile.ui.ScreenConductor.createViewFromScreen(ScreenConductor.java:124)
at com.couchsurfing.mobile.ui.ScreenConductor.showScreen(ScreenConductor.java:75)
at com.couchsurfing.mobile.ui.base.BaseViewActivity.showScreen(BaseViewActivity.java:78)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.showScreen(BaseActivityPresenter.java:347)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.showScreen(MainActivityBlueprint.java:158)
at com.couchsurfing.mobile.ui.base.BaseActivityPresenter.onLoad(BaseActivityPresenter.java:167)
at com.couchsurfing.mobile.ui.MainActivityBlueprint$Presenter.onLoad(MainActivityBlueprint.java:312)
at mortar.Presenter$1.onLoad(Presenter.java:34)
at mortar.RealActivityScope.doLoading(RealActivityScope.java:153)
at mortar.RealActivityScope.register(RealActivityScope.java:68)
at mortar.Presenter.takeView(Presenter.java:73)
at com.couchsurfing.mobile.ui.base.BaseActivity.onPostCreate(BaseActivity.java:182)
at com.couchsurfing.mobile.ui.MainActivity.onPostCreate(MainActivity.java:143)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1150)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2167)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(NativeStart.java)

@nathanielwolf nathanielwolf changed the title Infaltion crash when using Mortar Infaltion crash when using Calligraphy Feb 9, 2015
@nathanielwolf nathanielwolf changed the title Infaltion crash when using Calligraphy Inflation crash when using Calligraphy Feb 9, 2015
@runningcode
Copy link

did you explicitly add com.couchsurfing.mobile.ui.home.HomeView to the injects of one of your modules?

@bytehala
Copy link

Happening on mine as well. Yes, the injects SomeView is declared in one of the Screen.Modules. I can only make it work by adding the SomeView to the injects in RootModule. Sucks.

Maybe I just don't know how to use Dagger? IDK

Also, this guy has a point: http://stackoverflow.com/questions/26301133/no-inject-registered-you-must-explicitly-add-it-to-the-injects-option-in-one

@bytehala
Copy link

Okay I solved my problem by using ObjectGraphService.inject() on my Views, the crash was caused by Utils.inject(). It was adding to the wrong object graph I guess.

@nathanielwolf
Copy link
Author

This was a bug with Calligraphy, solved here chrisjenx/Calligraphy#135

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants