我有一个启用了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");
}
}
感谢您提供任何建议或解决方案。