我有一个简单的WebView启用和WebChromeClient使用 JavaScript 的地方。我正在加载的网页内容有一个select标签。当我点击它时,应用程序崩溃并出现以下错误片段:
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:1351)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2774)
at android.content.res.Resources.getLayout(Resources.java:1165)
at android.view.LayoutInflater.inflate(LayoutInflater.java:421)
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:378)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at org.chromium.content.browser.input.SelectPopupAdapter.getView(SelectPopupAdapter.java:56)
Run Code Online (Sandbox Code Playgroud)
我找到了这个材料,但它没有帮助,我找不到这个问题的任何解决方案。据我所知,该应用程序仅在 Android 5 和 6 上崩溃。当select按下 HTML 标签时,Android 似乎会尝试显示自己的Spinner. 它使用Resources以某种方式导致错误。我尝试WebView以编程方式创建,但没有帮助。这是我的代码:
val webview = WebView(this)
webview.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)
rootLayout.addView(webview)
webview.webChromeClient = WebChromeClient()
webview.settings.javaScriptEnabled = true
webview.loadUrl(intent.getStringExtra(URL))
Run Code Online (Sandbox Code Playgroud)
从谷歌的图书馆,我使用以下内容:
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0-beta01'
Run Code Online (Sandbox Code Playgroud)
我的问题是如何避免这个错误?也许我们可以创建自定义WebView?
一个类似的问题被问大约一年前,并没有完全解决,但我会尽我的运气,无论如何,也许有人知道这一点.
我有这个应用程序在WebView中运行几个HTML页面.一切看起来都不错,工作正常,直到你试图打开一个SELECT标签 - 繁荣,应用程序崩溃.这是一个跟踪堆栈,如果这有帮助:
线程[<1> main](Suspended(异常WindowManager $ BadTokenException))AlertDialog(Dialog).show()行:247
WebView $ InvokeListBox.run()行:7841
WebView $ PrivateHandler(Handler).handleCallback(Message)行: 587
WebView $ PrivateHandler(Handler).dispatchMessage(Message)行:92
Looper.loop()行:130 ActivityThread.main(String [])行:3859
Method.invokeNative(Object,Object [],Class,Class [], class,int,boolean)行:不可用[native method]
Method.invoke(Object,Object ...)行:507
ZygoteInit $ MethodAndArgsCaller.run()行:840
ZygoteInit.main(String [])行:598 NativeStart .main(String [])行:不可用[native method]
(AlertDialog与打开选择框有什么关系超出了我.不,没有与打开警报的SELECT相关联的脚本).
现在,这是最好的部分.我正在测试2台设备上的应用程序,三星Galaxy S2与OS 2.3.3,和摩托罗拉RAZR XT910与OS 2.3.5.在三星上一切都很棒.然而,在RAZR上,上述情况发生了.
CSS和JavaScript的页面相当繁重,但即使删除了所有内容,它也会崩溃.实际上,带有单个SELECT控件的空HTML仍会崩溃.从一年前的问题中提到的一些事情,我确实尝试过:
什么都没有帮助.
有没有人知道可能导致这种情况的最轻微的线索?