首页 > 解决方案 > 在 Webview 上使用 Javascript 控制可见性 LinearLayout

问题描述

我有一个启用了 JavaScript 的 WebView,我想通过 WebView 中的 JavaScript 调用一个函数,使 LinearLayout 项目可见,其他函数可以隐藏它

这是我在 WebView 中加载新页面时使其可见的工作功能

@Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            findViewById(R.id.cargando).setVisibility(View.VISIBLE);

        }

这是我的布局(非常标准)

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </WebView>

    <LinearLayout
        android:id="@+id/cargando"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#CC3333"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp"
        tools:ignore="MissingConstraints">

    </LinearLayout>

</android.support.constraint.ConstraintLayout>

我想要这样的东西,我可以通过 Javascript 调用:

WebAppInterface.java

public class WebAppInterface  extends MainActivity{

    Context mContext;

    WebAppInterface(Context c) {

        mContext = c;

    }

    @JavascriptInterface
    public void mostrar_cargar() {

        findViewById(R.id.cargando).setVisibility(View.VISIBLE);

        }
}

但我得到了错误

Cannot resolve method 'findViewById(int)'

我不知道是否需要向将通过 Javascript 调用的函数添加更多内容。

编辑1:

现在我在扩展我的 mainactivity 后没有收到错误,但在使用 JavaScript 调用函数 mostrar_cargar() 后我没有运行任何东西。

*当我在final LinearLayout cargando = (LinearLayout) findViewById(R.id.cargando);下面 添加时Context mContext;,我的应用程序无法运行。

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {

            WebView webView = (WebView) findViewById(R.id.webView);
            WebSettings webSettings = webView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webView.loadUrl("http://x.x.x.x");
            webView.addJavascriptInterface(new WebAppInterface(this),"Android");

      }
}

感谢您提供任何建议或解决方案。

标签: javascriptandroidandroid-webview

解决方案


推荐阅读