前提・実現したいこと
AndroidStudioとKotlinで、サーバから受け取ったHTMLをWebViewに表示するAndroidスマホ用アプリを作りたいです。
AndroidStudio
1Android Studio 4.0 2Build #AI-193.6911.18.40.6514223, built on May 21, 2020 38.1 Oreo 4 supportLibVersion = "28.0.0" 5 playServicesVersion = "18.0.0" 6 archRoomVersion = "1.0.0-alpha9-1" 7 constraintLayoutVersion = "1.1.3" 8 roomVersion = '1.1.1' 9 androidArchitectureVersion = "1.1.1" 10 lifecycleVersion = "2.0.0" 11 kotlinVersion = "1.3.31" 12 kotlinReflectVersion = "1.3.11" 13 kotlinCoroutinesVersion = "1.3.5"
発生している問題・エラーメッセージ
Fragment内のWebViewにloadDataで受け取ったHTMLをセットしても、最初の内容に表示した内容のまま、更新されません。
ただし、Huawei MediaPad T5のみで、発生しています。
これ以外のAndroid機器では今のところ、問題ありません。
試した機器 Huawei MediaPad T5(Android8):更新されない。 Huawei P20lite(Android8):更新される。 Sharp Aquos(Android9):更新される。
該当のソースコード
Kotlin
1val webSettings = webview.settings 2webSettings.javaScriptEnabled = true 3webview.addJavascriptInterface(webAppInterface, "Android") 4webview.loadDataWithBaseURL(null,data,"text/html", "utf-8", null) 5webview.reload()
Xml
1 <WebView 2 android:id="@+id/webview" 3 android:layout_width="match_parent" 4 android:layout_height="0dp" 5 app:layout_constraintBottom_toBottomOf="parent" 6 app:layout_constraintEnd_toEndOf="parent" 7 app:layout_constraintStart_toStartOf="parent" 8 app:layout_constraintTop_toTopOf="parent" />
試したこと
webview.loadDataを2回実行すれば更新される実例あり:効果なし。
1webview.loadDataではなくloadDataWithBaseURLなら更新される実例あり:効果なし。 2webview.reload()を実行:効果なし。 3全てのキャッシュのクリアを実行:効果なし。 4webviewを再生成:効果なし。 5Fragmentのdetachとattachを実行:更新されるが・・・合間に白画が表示され、見た目が悪い。 6画面の回転(ViewのDestroyとCreateが実行される):更新されるが・・・実用的ではない。 7GoogleWebViewをGoogleアプリストアで更新:GoogleWebViewそのものがインストールされていない。
Fragmentのdetachとattachが、今のところ精一杯です。
これで今はなんとか、お客様に暫定版として、受領いただきたいと思います。
しかし解決しないと、この先は使えってもらえないかと思います。
すみません、どなたかお助け願えましたら・・・。
あなたの回答
tips
プレビュー