现在在我的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,这样我就可以将它写入我的防火墙数据库中。我遇到的麻烦是在堆栈中找到能够在我的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我是安卓工作室的新手,所以谁都有智慧吗?
发布于 2018-12-22 00:26:48
因为您正在尝试访问匿名类内部的字段。Java不允许这样做。简单的解决方案使您的webView变量成为最终变量,或者声明为类字段。
final WebView webView = findViewById(R.id.webView)来自CLI应用程序的示例

https://stackoverflow.com/questions/53892079
复制相似问题