Android 5でクラスandroid.webkit.WebViewをインフレートするときにエラーが発生しました


8

Android 5.0(API 21)で次のエラーテストを行いました。他のOSバージョンでテストするとうまく機能します。

java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {... ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}:android.view.InflateException:Binary XML file line#24:Error inflating class android.webkit.WebView

24行目で、xmlレイアウトについて特別なことは何も見つかりません。

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

私はシミュレーターのイメージを引っ張るだけです。
MiguelSlv

シミュレーターにGoogle Playがインストールされていないため、インストールできません。
MiguelSlv

おかしい、getPackageManager()。hasSystemFeature( "android.software.webview")は、インストールされているがアプリマネージャーに表示されると言っています。
MiguelSlv

回答:


4

最近同じことに直面しました、ここで言及されている問題があり、まだ解決されていません。クラッシュはAPI 21でのみ発生します。

androidx.appcompat:appcompatバージョンのダウングレードについて言及するソリューションはほとんどありません。この答えは私を助けました。また、他にも考えられる回避策があります。該当する答えを選んでください。

編集:ユーザーがGoogle Playをインストールしていない場合、API 22および23でもクラッシュが発生します。

編集2:ここの課題トラッカー述べたように、androidx.appcompat:appcompatバージョンを1.2.0-alpha02にアップグレードすると、いくつかのケースで修正が提供されます。詳細なディスカッションを行って、適切な回避策を見つけてください。

@MiguelSlvで述べたように、この Mavenリポジトリーの追加は一時的な修正ですが、上記のすべての回避策には副作用があります。バグはまだ修正されていないため、クリーンなソリューションではありません。


あなたが言及している問題が同じであるかわからない。あなたの問題では、クラッシュはリソースに関するものです。スタックエラーで表示されません。
MiguelSlv

1
私はそれは同様だと思います、他の問題と議論を見てください、それは1.2.0-alpha02`がそれを修正すると結論付けられます。issuetracker.google.com/issues/141351441#comment35
サム。

1
@MiguelSlv私はあなたがスタックトラックから同様の問題に直面していると思います、それはCaused by: android.content.res.Resources$NotFoundException: String resource ID提供された解決策を親切に確認することは明らかです、私はそれが助けになると思います
シャドウドロイド

1
@サム。コメントで述べたポイントで回答を親切に更新してください
Shadow Droid

alpha01は私のためにそれを修正しません。私はalpha02を使用しようとしましたが、何らかの理由で、gradleはそれを見つけることができません。Mavenリポジトリー ' ci.android.com/builds/submitted/6052626/androidx_snapshot/… 'を追加しました。コンストラクターを変更すると、いくつかの副作用が発生する可能性があります。
MiguelSlv

3

私が2020年3月に書いているこの回答は、その後変更される可能性があります。

私の場合、build.gradle、アプリレベルで、に変更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'

2-およびGradle-wrapper.propertiesで distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

3-およびgradleアプリレベルで私はandroid { compileSdkVersion 29 buildToolsVersion '29.0.2' このソリューションがAndroidバージョン5の実際のデバイスでテストされていることに注意しました


コメントに感謝...最新の安定版をしたい開発者は、このリンクを見ることができmvnrepository.com/artifact/androidx.appcompat/...
ベヤズ

私はまだ問題が解決していないが発生...最新androidxを使用
ベヤズ

この答えは間違っています
Beyaz

@ Beyaz:答えがうまくいかない場合でも、それが間違っているとは限りません。それは私の問題を解決し、すでに他の2人の開発者によって賛成票が投じられたためです。理解するためのおかげで
Atefファルーク

@Atef様私は10個以上のアプリを持っています...すべてのアプリにAndroid 5.1のクラッシュ問題があります...うまくいったと言われています...しかし、あなたは間違っています...私はまだこのバグを修正しようとしています
Beyaz

2

2020年4月24日、私はこれでそれを解決しました:

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

以前の機能していないバージョンは次のとおりです:

implementation 'androidx.appcompat:appcompat:1.1.0'

@canerkaseler


2
これでうまくいきました。2020
Yoannes Geissler

0

私は10個以上のアプリを持っています。すべてのアプリに「問題を膨らませている」があり、問題を解決しようとしていました...そして、エミュレーターと実際のデバイスでテストしましたが、クラッシュはありません...しかし、私のユーザーはそうです!最後に、エミュレータでテストしているときに、クラッシュを検出しました。結果は次のとおりです。この回答は、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 

このバージョンを引き続きテストし、結果を共有します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.