我在本地HTML页面中显示图像,并有一个用于点击事件的按钮。单击此按钮时,我需要调用另一个活动。它正在发挥作用。但问题是在转向另一个然后回到HTML页面后,图像没有显示,应用程序无法正常工作。
<script language="javascript">
function validClick() {
valid.performClick();
document.getElementById("ok").value = "start";
}
function refuseClick(){
refuse.performClick();
document.getElementById("no").value = "Je refuse";
}
<div>
<button type="button" id="ok"
style="font-weight: 700; margin-right: 20px;" onclick="validClick();">Start</button>
</div>
HTML页面包含图片:
<li><a class="box" href="products.html" data-transition="fade" > <img src="img/products.png" alt="Products"> <span class="text"> Products</span>
MainActivity:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.about_screen);
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl("file:///android_asset/index.html");
valid = new Button(this);
valid.setOnClickListener(this);
refuse = new Button(this);
refuse.setOnClickListener(this);
// Enablejavascript
WebSettings ws = webview.getSettings();
ws.setJavaScriptEnabled(true);
// Add the interface to record javascript events
webview.addJavascriptInterface(valid, "valid");
webview.addJavascriptInterface(refuse, "refuse");
}
@Override
public void onClick(View v) {
if (v.equals(valid)) {
Intent i = new Intent(this, CloudReco.class);
startActivity(i);
} else if (v.equals(refuse)) {
//do Something else }
}
答案 0 :(得分:3)
您需要检查一些代码。
首先,在您的HTML中,顶部的<script>
标记未关闭。请在最后一个函数定义后添加</script>
。
其次,在Java中,请在调用loadUrl
之前配置WebView。应首先注册设置和JavaScript接口。
第三,没有必要使用Button
小部件来实现您正在寻找的效果。这样的事情应该是完全足够的:
webview.addJavaScriptInterface(new Object() {
@JavaScriptInterface
public void performClick() {
Intent i = new Intent(this, CloudReco.class);
startActivity(i);
}
}, "valid");
和类似的&#34;拒绝&#34;。
答案 1 :(得分:0)
下一个&#34;奇怪&#34;方法我曾用过很多javascript事件(最后一次使用是来自滚动事件,我也传递了连接的值):
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("button1Event")) {
// button1 was clicked inside webview html
Toast.makeText(context, 'Button1WasClicked', Toast.LENGTH_SHORT);
return true; (to avoid a default redirect to the url)
} else if (url.contains("button2Event")) {
// button2 was clicked inside webview html
Toast.makeText(context, 'Button2WasClicked', Toast.LENGTH_SHORT);
return true; (to avoid a default redirect to the url)
}
return false;
}
}
HTML包含一个虚拟<a>
元素,用于模拟URLclick,其中URL是我们在本机代码中等待的KEY:
<!DOCTYPE html>
<html>
<body>
<a id='yourLinkID'></a>
<button onclick="myFunction('button1Event')">Button1</button>
<button onclick="myFunction('button2Event')">Button2</button>
<script>
function myFunction(value) {
document.getElementById('yourLinkID').href = 'testtest' + value;
document.getElementById('yourLinkID').click();
// we set the wanted URL and simulate the click
}
</script>
</body>
</html>