Xamarin.forms: [Bug] String resource ID #0x2040003 on WebViewRenderer

Created on 10 Apr 2020  路  10Comments  路  Source: xamarin/Xamarin.Forms

Description

I have custom WebView renderer in my app which inherits from WebViewRenderer. When I'm trying to open this WebView in my app on Android 5.1 device it crashes in base.OnElementChanged(e) invoke with exception: NotFoundException: String resource ID #0x2040003
According to this https://stackoverflow.com/questions/41025200/android-view-inflateexception-error-inflating-class-android-webkit-webview it could be exception from Google native library - androidx.appcompat

Steps to Reproduce

  1. Create WebView renderer and use it in app
  2. I'm convinced that this step is not necessary but you can try. Override OnElementChanged and call base method.
  3. Open WebView in app on Android 5.1 device
  4. Crash occurs

Expected Behavior

App does not crash

Actual Behavior

Crash occurs every time when I try to open custom WebView

Basic Information

  • Version with issue: Xamarin Forms 4.5.0.617
  • Last known good version: 4.4.0
  • IDE: Visual Studio 2019 Enterprise
  • Platform Target Frameworks:

    • Android: SDK 29

  • Nuget Packages: Xamarin Forms 4.5.0.617, Prism Forms 7.1
  • Affected Devices: Android 5.0 and Android 5.1 (API 21 and 22)
customrenderer webview 2 high Android bug

Most helpful comment

@monolara Finally I found working solution! In MainActivity declare: ConfigurationChanges = ConfigChanges.UiMode and it works! Credits: https://stackoverflow.com/a/58684213/6457073

All 10 comments

Is there any chance for fix in XF 4.6?

@Skirtek Can you please attach a small project that demonstrates this issue? Thanks!

Here is a repro:
_10289.zip

I can reproduce the issue. Tested on emulator and old device (Api Level 19):

MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Android.Content.Res.Resources+NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f07005b ---> Org.XmlPull.V1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
[MonoDroid]    --- End of inner exception stack trace ---
[MonoDroid]   at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0008e] in <26521a5118b44c858c385715922b9d5d>:0 
[Mo04-21 13:24:23.544 I]   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0005d] in <26521a5118b44c858c385715922b9d5d>:0 
[MonoDroid]   at Android.App.Activity.OnCreate (Android.OS.Bundle savedInstanceState) [0x00031] in <d3b924763d4a465c85b26f6e8edc8a53>:0 
[MonoDroid]   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnCreate (Android.OS.Bundle savedInstanceState, Xamarin.Forms.Platform.Android.ActivationFlags flags) [0x0003b] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:227 
[MonoDroid]   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnCreate (Android.OS.Bundle savedInstanceState) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:209 
[MonoDroid]   at _10289.Droid.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) [0x00017] in /Users/jsuarez/Downloads/_10289-2/_10289/_10289.Android/MainActivity.cs:20 
[MonoDroid]   at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <d3b924763d4a465c85b26f6e8edc8a53>:0 
[MonoDroid]   at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.8(intptr,intptr,intptr)
[MonoDroid]   --- End of managed Android.Content.Res.Resources+NotFoundException stack trace ---
[MonoDroid] android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f07005b
[MonoDroid]     at android.content.res.Resources.loadDrawable(Resources.java:2101)
[MonoDroid]     at android.content.res.Resources.getDrawable(Resources.java:700)
[MonoDroid]     at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:456)
[MonoDroid]     at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:144)
[MonoDroid]     at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
[MonoDroid]     at androidx.appcompat.widget.ResourceManagerInternal.checkVectorDrawableSetup(ResourceManagerInternal.java:504)
[MonoDroid]     at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:137)
[MonoDroid]     at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:411)
[MonoDroid]     at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
[MonoDroid]     at androidx.appcompat.app.AppCompatDelegateImpl.attachToWindow(AppCompatDelegateImpl.java:647)
[MonoDroid]     at androidx.appcompat.app.AppCompatDelegateImpl.ensureWindow(AppCompatDelegateImpl.java:623)
[MonoDroid]     at androidx.appcompat.app.AppCompatDelegateImpl.onCreate(AppCompatDelegateImpl.java:350)
[MonoDroid]     at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:105)
[MonoDroid]     at crc64dae04da323d3ce54.MainActivity.n_onCreate(Native Method)
[MonoDroid]     at crc64dae04da323d3ce54.MainActivity.onCreate(MainActivity.java:38)
[MonoDroid]     at android.app.Activity.performCreate(Activity.java:5231)
[MonoDroid]     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
[MonoDroid]     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
[MonoDroid]     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
[MonoDroid]     at android.app.ActivityThread.access$800(ActivityThread.java:135)
[MonoDroid]     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
[MonoDroid]     at android.os.Handler.dispatchMessage(Handler.java:102)
[MonoDroid]     at android.os.Looper.loop(Looper.java:136)
[MonoDroid]     at android.app.ActivityThread.main(ActivityThread.java:5017)
[MonoDroid]     at java.lang.reflect.Method.invokeNative(Native Method)
[MonoDroid]     at java.lang.reflect.Method.invoke(Method.java:515)
[MonoDroid]     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
[MonoDroid]     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
[MonoDroid]     at dalvik.system.NativeStart.main(Native Method)
[MonoDroid] Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
[MonoDroid]     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
[MonoDroid]     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
[MonoDroid]     at android.content.res.Resources.loadDrawable(Resources.java:2097)
[MonoDroid]     ... 28 more

Hi, is there any fix on this or any workaround?

@monolara I think it get stucked in TO DO column :(

On the last preview release (Xamarin.Forms.4.7.0.848-pre3), it doesn't crash for me, but all I got is a white screen.

Finally works on the last pre4 release.

@maarkristof I can not agree. I tested application on pre3, pre4 and 4.7. It is not fixed yet. Any hopes to fix this soon?

@monolara Finally I found working solution! In MainActivity declare: ConfigurationChanges = ConfigChanges.UiMode and it works! Credits: https://stackoverflow.com/a/58684213/6457073

Was this page helpful?
0 / 5 - 0 ratings