【问题标题】:Error inflating class android.webkit.WebView on android 5在 android 5 上膨胀类 android.webkit.WebView 时出错
【发布时间】:2023-04-05 22:24:02
【问题描述】:

我在 Android 5.0 (API 21) 上进行了以下错误测试。在其他操作系统版本上测试运行良好。

java.lang.RuntimeException:无法启动活动 ComponentInfo{...ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException:二进制 XML 文件第 24 行:错误 膨胀类 android.webkit.WebView

找不到关于 xml 布局的任何特别之处,第 24 行:

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

代码:

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.

我正在使用库 'androidx.appcompat:appcompat:1.1.0'。

更新: 全栈:

--------- 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

【问题讨论】:

  • 设备是否安装了最新的“Android System WebView”?在 Android 5.0,IIRC 上,该“应用程序”提供了 WebView 背后的胆量。
  • 我只是拉模拟器图像。猜不出来。
  • 并且无法安装,因为模拟器没有安装google play。
  • 有趣的是,getPackageManager().hasSystemFeature("android.software.webview") 说它已安装,但它现在显示在应用管理器上。

标签: android webview android-appcompat androidx


【解决方案1】:

2020 年 4 月 24 日,我解决了这个问题:

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

之前和不工作的版本如下:

implementation 'androidx.appcompat:appcompat:1.1.0'

【讨论】:

  • 在哪里添加?
  • 在build.gradle中添加(模块:App)
【解决方案2】:

最近我遇到了同样的问题,here 提到了一个问题,尚未解决。崩溃仅发生在 API 21 上。

很少有解决方案提到降级androidx.appcompat:appcompat 版本。这个answer 帮助了我。此外,还有其他可能的解决方法,请选择适用于您的答案。

编辑:如果用户没有安装 Google Play,API 22 和 23 也会发生崩溃。

编辑 2:正如问题跟踪器 here 中所述,将 androidx.appcompat:appcompat 版本升级到 1.2.0-alpha02 在某些情况下提供了修复。请进行详细讨论以找到合适的解决方法。

正如@MiguelSlv 所提到的,添加this maven 存储库是一个临时修复,但是,上述所有解决方法都有副作用。由于该错误尚未修复,因此不是一个干净的解决方案。

编辑 3:自 2020 年 5 月起,有一个修复程序。

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

以前的不工作版本:

implementation 'androidx.appcompat:appcompat:1.1.0'

【讨论】:

  • 不确定您提到的问题是否相同。在您的问题中,崩溃与资源有关。我的堆栈错误中没有看到它。
  • 我觉得差不多,请看其他issue和讨论,结论是1.2.0-alpha02`修复了。 issuetracker.google.com/issues/141351441#comment35
  • @MiguelSlv 我猜你在堆栈跟踪中遇到了类似的问题很明显Caused by: android.content.res.Resources$NotFoundException: String resource ID 请检查提供的解决方案,我想这会有所帮助
  • @Sam。请用您在评论中提到的观点更新答案
  • alpha01 没有为我修复它。我尝试使用 alpha02 但由于某种原因,gradle 找不到它。我添加了 Maven 存储库'ci.android.com/builds/submitted/6052626/androidx_snapshot/…'。修改构造函数可能会产生一些副作用。仍在为我的情况寻找一个干净的解决方案。
【解决方案3】:

我在 2020 年 3 月写的这个答案,之后可能会更改。

在我的情况下,build.gradle (app level),我改变了

implementation 'androidx.appcompat:appcompat:1.0.0'

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

问题就解决了。

我已有的其他配置,但我没有更改它们:-

  1. 在 Gradle 项目级别
classpath 'com.android.tools.build:gradle:3.5.3'
  1. gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
  1. gradle app level
android {
    compileSdkVersion 29
    buildToolsVersion '29.0.2'
    ...
}

请注意,此解决方案已在具有 android 版本 5 的真实设备上进行了测试

【讨论】:

  • 感谢评论...想要最新稳定版本的开发者可以看这个链接mvnrepository.com/artifact/androidx.appcompat/…
  • 我用的是最新的androidx...仍然出现问题没有解决
  • @Beyaz:如果答案对您不起作用,并不意味着它是错误的。因为它解决了我的问题,并且已经被其他 2 位开发人员投票赞成。感谢理解
  • 亲爱的@Atef,我有十多个应用程序...我所有的应用程序都存在 android 5.1 崩溃问题...您说它对您有用...但您错了...我仍在尝试修复此错误
  • @Beyaz:我理解你的反馈。赞赏。
【解决方案4】:

我有十多个应用程序,我所有的应用程序都有“膨胀问题”我试图解决问题......而且我已经用模拟器和真实设备进行了测试,它们没有崩溃......但是我的用户就是这样! 最后,在使用 emulator 进行测试时,我遇到了崩溃。这是结果: 此答案写于 2020 年 4 月 19 日:

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

以上版本有严重问题......创建对话框,导致Edittext或TextView膨胀问题......

以下版本经过了一些测试,但没有崩溃

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

仍在测试此版本,将分享结果

【讨论】:

  • 有测试结果吗?
猜你喜欢
  • 2014-10-31
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2017-02-16
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多