首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在webview完成加载后从webview中的getelementbyid获取innerText

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

Stack Overflow用户
提问于 2018-12-22 00:15:23
回答 1查看 211关注 0票数 0

现在在我的onCreate

代码语言:javascript
复制
    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,这样我就可以将它写入我的防火墙数据库中。我遇到的麻烦是在堆栈中找到能够在我的setWebChromeClient中工作的代码。

我在看这个,把它放在if (progress == 100) {下,但是

代码语言:javascript
复制
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
        }
        });

但我得到了

代码语言:javascript
复制
Variable 'webView' is accessed from within inner class, needs to be declared final

我是安卓工作室的新手,所以谁都有智慧吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-22 00:26:48

因为您正在尝试访问匿名类内部的字段。Java不允许这样做。简单的解决方案使您的webView变量成为最终变量,或者声明为类字段。

代码语言:javascript
复制
final WebView webView = findViewById(R.id.webView)

来自CLI应用程序的示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53892079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档