webview加载完成后,从webview中的getelementbyid获取innerText

塞萨尔·比利希

目前在我的onCreate我有

    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            if (progress == 100) {


                // get the innerText from user_id_firebase ID and put it in my db
                FirebaseDatabase database = FirebaseDatabase.getInstance();
                DatabaseReference myRef = database.getReference("message");

                myRef.setValue("Done Loading!");
            }
        }
    });

这确保我的 webview 已完成加载所有 html。在这一点上,我需要通过元素的 id 获取元素的 innerText,user_id_firebase以便我可以将它写入我的 firebase 数据库。我遇到的问题是在堆栈上找到可以在我的内部工作的代码setWebChromeClient

我正在看着这个并将它放在下面if (progress == 100) {但是

webView.evaluateJavascript(
        "(function() { return ('<html>'+document.getElementsByTagName('user_id_firebase')[0].innerHTML+'</html>'); })();",
        new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
        Log.d("HTML", html);
        // code here
        }
        });

但我得到

Variable 'webView' is accessed from within inner class, needs to be declared final

老实说,我是 Android Studio 的新手,所以有人有一些智慧吗?

德米特罗·伊万诺夫

因为您正试图访问匿名类内部的字段。Java 不允许这样做。简单的解决方案使您的 webView 变量成为 final 或像类字段一样声明。

final WebView webView = findViewById(R.id.webView)

来自 CLI 应用程序的示例 在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章