javascript - 在 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");
}
}
感谢您提供任何建议或解决方案。
解决方案
推荐阅读
- angular2-nativescript - tabview 中的两个 Listview 不能按预期工作
- javascript - 使用 jQuery 验证表单下拉列表
- c++ - 在 C++ 中使用递归时无法传递二维数组
- html - 悬停功能在 CSS 侧边栏中不起作用
- function - Twilio 中调用 API 发布请求的函数
- jquery - 成功登录后重定向到用户仪表板
- ms-word - 从功能区添加新文档后关闭文档时出现 InteropServices.ComException
- c - MISRA-C 规则 11.2:从数组到指针的转换
- ios - 国际象棋游戏的 Sprite Kit 游戏设计
- checkbox - 有没有办法用 PyGtk 制作一个不确定的复选按钮?