我正在webView
现在我要做的是填充来自我的java类变量的html
中的文本框,然后自动点击提交。
但我不知道该怎么做。
任何人都会受到赞赏。
答案 0 :(得分:43)
首先,您的网址似乎无法使用。
如果您想在Android应用和您的网络应用/网页之间进行数据交换,您可以通过javascript实现此目的。
以下是Android官方网站的示例:
创建一个这样的类:
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
在WebView
:
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
在您的网页中:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
如果您想将某些内容传递到您的网页,只需调用相应的javascript函数:
String str = "xxx";
myWebView.loadUrl("javascript:xxx('"+str+"')");
这是参考: http://developer.android.com/guide/webapps/webview.html
答案 1 :(得分:17)
我想补充说,加载html时应该完成javascript函数的加载。要控制它,您可以使用以下内容:
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/test.html");
webview.setWebViewClient(new WebViewClient(){
public void onPageFinished(WebView view, String url){
webview.loadUrl("javascript:init('" + theArgumentYouWantToPass + "')");
}
});
的test.html
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
hola
adios
</body>
<script type="text/javascript">
function init(val){
// Do whatever you want with your parameter val
}
</script>
</html>
取自Uncaught ReferenceError: myFunction is not defined at null:1 Android exception in webview
答案 2 :(得分:3)
请注意,要像这样调用javascript函数,str
可能包含单引号或其他特殊字符。
String str = "xxx";
myWebView.loadUrl("javascript:xxx('"+str+"')");
我建议在base64中编码str
,并在javascript端对其进行解码。
Android
String str = "xxx";
//encode in base64
String base64Str = Base64.encodeToString(str.getBytes(), Base64.NO_WRAP);
myWebView.loadUrl("javascript:xxx('"+ base64Str +"')");
Javascript
function xxx(val) {
//decode from base64
var str = atob(data)
}
答案 3 :(得分:0)
只需启用DomStorage并编写&#34; var x =&#34;字符串:
import javax.swing.*;
import java.awt.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.util.*;
import javax.swing.JFrame;
import java.awt.Dimension;
public class Gui extends JFrame
{
private JLabel lab1,lab2;
private JButton butt1,butt2;
private JPanel p1,p2;
public static void main(String[] args)
{
Gui okno = new Gui();
//vytáhne z defaultního monitoru width a height
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) screenSize.getWidth();
int height = (int) screenSize.getHeight();
//velikost okna
Dimension appSize = new Dimension(210,250);
okno.setPreferredSize(appSize);
//nastavení na stred
okno.setLocation((width/2)-105,(height/2)-125);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.setVisible(true);
//okno.setLocationRelativeTo(null); todle dá do středu obrazovky jen první body x a y od kterejch se to odvíjí
okno.setResizable(false);
okno.pack();
}
public Gui(){
super("Jméno hry vole");
setLayout(new BorderLayout(20,20));
/////////////////////////////////////////////////////////////////
// p1
p1 = new JPanel();
add(p1,BorderLayout.NORTH);
lab1 = new JLabel("Welcome",SwingConstants.CENTER); //centr labelu
lab2 = new JLabel("Created by DECHKR",SwingConstants.CENTER); //centr labelu
lab1.setFont(new Font("Serif", Font.PLAIN, 36)); //velikost fontu
p1.add(lab1);
//p2
p2 = new JPanel(new GridLayout(2,1,0,5));
add(p2,BorderLayout.SOUTH);
Dimension d = new Dimension(210,75);
butt1 = new JButton("Login");
butt1.setPreferredSize(d);
butt2 = new JButton("Register");
butt2.setPreferredSize(d);
p2.add(butt1);
p2.add(butt2);
butt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
//Gui okno = new Gui();
//System.exit(0); endne celej jvm proces
}
});
butt2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
}
});
}
答案 4 :(得分:0)
直接在网址中传递参数
webView.loadUrl("file:///android_asset/animation.html?message=testing");
在html
文件中获取参数
var url_string = window.location.href
var url = new URL(url_string);
var message= url.searchParams.get("message");