使用Webview上的Javascript控制可见性LinearLayout

时间:2018-05-16 22:59:41

标签: javascript android android-webview

我有一个启用了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调用的函数中添加更多内容。

EDIT1:

现在我在扩展主要活动后没有收到错误,但是在用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");

      }
}

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

0 个答案:

没有答案