java - Android 在 webview 中点击按钮

标签 java android user-interface

我正在尝试在 WebView 中实现一个按钮,我使用以下代码:

package com.example.tests;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint("SetJavaScriptEnabled")
public class Webview extends Activity {

   private WebView browser;

   @Override        
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      browser = (WebView)findViewById(R.id.webView1);
      browser.getSettings().setJavaScriptEnabled(true);
      browser.getSettings().setLoadsImagesAutomatically(true);
      browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
      browser.setWebViewClient(new MyBrowser());
      browser.loadUrl("file:///android_asset/index.html");
   }


   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
          view.loadUrl(url); 
          view.addJavascriptInterface(new Object()
          {
              @JavascriptInterface
            public void performClick() throws Exception
            {
                Log.d("LOGIN::", "Clicked");
                 Toast.makeText(Webview.this, "Login clicked", Toast.LENGTH_LONG).show();
            }
          }, "login");
         return true;
      }
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }

}

对于html页面:

<html>
<head>
<script language="javascript">
function js1() 
{
document.loginform.method="post";
document.loginform.action = "https://example.com/chechlogin.asp";
}
</script>
</head>
<body>
<form name="loginform">
<input type="text" name="empcode" value="58686" /><br/>
<input type="password" name="emppassNTL" />
<input type="submit" name="submit" id="submit_id" onclick="btnLogin.performClick();" />

当点击按钮时,应该显示一条 toast 消息,但是它不起作用,有什么帮助吗?

最佳答案

改变

<input type="submit" name="submit" id="submit_id" onclick="btnLogin.performClick();" />

<input type="submit" name="submit" id="submit_id" onclick="login.performClick();" />

因为您的Interface名称是login而不是btnLogin

有关更多信息,请参阅这篇最佳帖子 Android webview JavaScript Interface

关于java - Android 在 webview 中点击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257256/

相关文章:

java - 如何将 TextView 数据从第一个 Activity 发送到第三个 Activity

java - 如何将 DAO 和 GUI 与 MVC 结合在一起

Java Swing架构问题?

jquery - 如何从markerclustererplus获取点击事件

java - OSGi 版本注释的奇怪 javadoc 错误(带有 jdk12)

JavaEE6 DAO : Should it be @Stateless or @ApplicationScoped?

android - 删除 SD 卡中的图像副本

java - Spring boot创建bean错误

java - 在运行时突出显示 WebDriver 中的元素

android - OAuth 示例应用程序因验证错误而崩溃