Android HTML 按钮 onclick 事件

标签 android html android-activity android-webview android-websettings

我在本地 HTML 页面中显示图像,并有一个用于单击事件的按钮。单击此按钮时,我需要调用另一个 Activity 。它的工作。但问题是在再次访问 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> 

主要 Activity :

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 }
    }

最佳答案

您需要检查您的代码的一些事项。

首先,在您的 HTML 中,<script>顶部的标签未关闭。请加一个</script>在你最后一个函数定义之后。

其次,在 Java 中,请在调用 loadUrl 之前配置您的 WebView .应首先注册设置和 JavaScript 接口(interface)。

第三,没有必要使用 Button小部件来实现您正在寻找的效果。像这样的东西应该是完全足够的:

webview.addJavaScriptInterface(new Object() {
    @JavaScriptInterface
    public void performClick() {
        Intent i = new Intent(this, CloudReco.class);
        startActivity(i);
    }
}, "valid");

和“拒绝”类似。

关于Android HTML 按钮 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153266/

相关文章:

android - 卸载应用程序后保留数据

android - 关于 com.sothree.slidinguppanel.SlidingUpPanelLayout

html - 将 CSS 添加到 HTML 复选框

c# - Xamarin C#Android和PARSE-在parseObject中下载parseFile

php - 为什么我的 $Post 操作不起作用

javascript - 通过 jQuery 显示/隐藏 <li>

java - 从所有 Activity/类中删除一行代码

java - 如何将 Activity 引用传递给我自己的组件

android - 如何在 Activity 重新启动时保留复杂对象?

android - 无法从 WindowManager 中删除 View - 多线程