Error al inflar la clase android.webkit.WebView en android 5

8

Obtuve la siguiente prueba de error en Android 5.0 (API 21). Probado en otras versiones del sistema operativo funciona bien.

java.lang.RuntimeException: no se puede iniciar la actividad ComponentInfo {... ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: línea de archivo XML binario # 24: Error al inflar la clase android.webkit.WebView

No puedo encontrar nada especial sobre el diseño xml, en la línea 24:

<WebView
    android:id="@+id/nav_fg_legal_detail_web"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  />

El código:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setTheme(R.style.AppTheme_NoActionBar)
    setContentView(R.layout.legal_detail_activity) // crash here. Nothing done to web view yet.

Estoy usando la biblioteca 'androidx.appcompat: appcompat: 1.1.0'.

Actualización : la pila completa:

--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.byte_artisan.mchat2, PID: 4198
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.byte_artisan.mchat2/com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class android.webkit.WebView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at android.app.ActivityThread.access$800(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class android.webkit.WebView
    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
    at com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity.onCreate(LegalDetailActivity.kt:18)
    at android.app.Activity.performCreate(Activity.java:5937)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
    at android.view.LayoutInflater.createView(LayoutInflater.java:607)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
    at com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity.onCreate(LegalDetailActivity.kt:18) 
    at android.app.Activity.performCreate(Activity.java:5937) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
 Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040002
    at android.content.res.Resources.getText(Resources.java:274)
    at android.content.res.Resources.getString(Resources.java:360)
    at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:702)
    at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
    at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:619)
    at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:758)
    at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:608)
    at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:546)
    at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:312)
    at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:97)
    at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:264)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:124)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:111)
    at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:108)
    at com.android.webview.chro
MiguelSlv
fuente
¿El dispositivo tiene una instalación actualizada de "Android System WebView"? En Android 5.0, IIRC, esa "aplicación" proporciona las agallas detrás WebView.
CommonsWare
Acabo de tirar de la imagen del simulador. Supongo que no.
MiguelSlv
Y no puedo instalarlo, porque el simulador no tiene instalado Google Play.
MiguelSlv
Curioso, getPackageManager (). HasSystemFeature ("android.software.webview") dice que está instalado pero ahora se muestra en el administrador de aplicaciones.
MiguelSlv

Respuestas:

4

Recientemente me enfrenté a lo mismo, hay un problema que se menciona aquí , que aún no se ha resuelto. El bloqueo solo ocurre en API 21.

Hay pocas soluciones que mencionen la degradación de las androidx.appcompat:appcompatversiones. Esta respuesta me ayudó. Además, hay otras posibles soluciones mencionadas, elija la respuesta que se aplique a usted.

EDITAR: El bloqueo también se produce en las API 22 y 23 si el usuario no tiene instalado Google Play.

EDITAR 2: como se menciona en el rastreador de problemas aquí , y actualizar la androidx.appcompat:appcompatversión a 1.2.0-alpha02 proporciona la solución en algunos casos. Siga una discusión detallada para encontrar una solución alternativa adecuada.

Como mencionó @MiguelSlv, agregar este repositorio Maven es una solución temporal. Sin embargo, todas las soluciones anteriores tienen efectos secundarios. Como el error aún no se ha solucionado, no es una solución limpia.

Sam
fuente
No estoy seguro de que el problema que menciona sea el mismo. En su problema, el bloqueo se trata de un recurso. No lo veo en mi error de pila.
MiguelSlv
1
Creo que es similar, vea el otro tema y discusión, se concluye que 1.2.0-alpha02` lo soluciona. issuetracker.google.com/issues/141351441#comment35
Sam.
1
@MiguelSlv Supongo que se enfrenta a un problema similar con el seguimiento de la pila, es claro que Caused by: android.content.res.Resources$NotFoundException: String resource IDcompruebe amablemente con la solución provista, supongo que ayudaría
Shadow Droid
1
@Sam. amablemente actualice la respuesta con el punto que ha mencionado en el comentario
Shadow Droid
alpha01 no me lo arregla. Intento usar alpha02 pero, por alguna razón, Gradle no puede encontrarlo. agregué el repositorio de maven ' ci.android.com/builds/submitted/6052626/androidx_snapshot/… '. Modificar el constructor puede tener algunos efectos secundarios. Todavía estoy buscando una solución limpia para mi caso.
MiguelSlv
3

Esta respuesta que escribo en marzo de 2020 podría modificarse después de eso.

En mi caso, en build.gradle, nivel de aplicación, cambié implementation 'androidx.appcompat:appcompat:1.0.0'a implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'y el problema está resuelto.

Otra configuración que ya tengo pero no la cambié: - 1-en el nivel de proyecto Gradle que he

classpath 'com.android.tools.build:gradle:3.5.3'

2- y en Gradle-wrapper.properties he distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

3- y en el nivel de aplicación Gradle, he notado android { compileSdkVersion 29 buildToolsVersion '29.0.2' que esta solución se prueba en un dispositivo real con la versión 5 de Android

Atef Farouk
fuente
gracias por comentar ... los desarrolladores que deseen la última versión estable pueden consultar este enlace mvnrepository.com/artifact/androidx.appcompat/…
Beyaz
Utilicé la última versión de Androidx ... todavía se producen problemas que no se han resuelto
Beyaz
Esta respuesta es incorrecta
Beyaz
@ Beyaz: si la respuesta no funciona para usted, no significa que esté equivocada. ya que resolvió mi problema y ya votó por otros 2 desarrolladores. gracias por entender
Atef Farouk
Estimado @Atef, tengo más de diez aplicaciones ... Todas mis aplicaciones tienen un problema de bloqueo para Android 5.1 ... Estás diciendo que funcionó para ti ... pero te equivocas ... Todavía estoy tratando de solucionar este error
Beyaz
2

El 24 de abril de 2020, lo resolví con esto:

implementation 'androidx.appcompat:appcompat:1.2.0-beta01'

La versión anterior y que no funciona es la siguiente:

implementation 'androidx.appcompat:appcompat:1.1.0'

@canerkaseler

Canerkaseler
fuente
2
Esto funcionó para mí. 01 de mayo de 2020
Yoannes Geissler
0

Tengo más de diez aplicaciones, todas mis aplicaciones tienen "problemas de inflado". Estaba tratando de resolver problemas ... Y lo he probado con emuladores y dispositivos reales, no tienen bloqueo ... ¡Pero mi usuario así! Finalmente, mientras probaba con el emulador, cogí el bloqueo. Aquí está el resultado: esta respuesta se escribió el 19 de abril de 2020:

androidx.appcompat:appcompat:1.2.0-beta01
androidx.appcompat:appcompat:1.2.0-alpha03
androidx.appcompat:appcompat:1.2.0-alpha02

las versiones anteriores tienen problemas graves ... La creación de diálogos, causa problemas de inflado de Edittext o TextView ...

Las versiones a continuación se han probado un poco pero no hubo bloqueo

androidx.appcompat:appcompat:1.2.0-alpha01
androidx.appcompat:appcompat:1.1.0 

Aún probando estas versiones, compartiremos resultados

Beyaz
fuente