【问题标题】:Java get variable from another class in Android JavascriptInterfaceJava从Android JavascriptInterface中的另一个类获取变量
【发布时间】:2015-01-22 08:16:33
【问题描述】:

我有两个班级,我想在 MainActivity 中获取“JSI.var”。首先,当我单击按钮时,我得到“”空值。所以,没有日志。其次,我得到了 document.getElementsByName('name')[4].src) 值。因此,下一个日志中有 document.getElementsByName('name')[4].src) 。我如何在@JavascriptInterface 方法中获得另一个类。

在 MainActivity 的 onCreate() 方法中

  webview.getSettings().setJavaScriptEnabled(true);
  webview.addJavascriptInterface(new JSI(), "HTMLOUT");
  bt1.setOnClickListener(new OnClickListener(){
        public void onClick(View v){        
            for(int i=0;i<5;i++){
             webview.loadUrl("javascript:window.HTMLOUT.processHTML(document.getElementsByName('name')["+i+"].src);");
             Log.i("CODE : ",JSI.var);
             //or
             String str = JSI.var;}
        }});

JSI 类

import android.webkit.JavascriptInterface;

public class JSI
{
    static String var="";

 @JavascriptInterface
 public static void processHTML(String html)
{    
    var=html;
 }
 }

【问题讨论】:

  • 可能问题是Log.i在javascript之前执行,尝试在Log之前放一个延迟,或者Log in processHTML方法
  • 如果我将 Log.i---> 放入 processHTML(String html) 方法。日志工作正常。但我想获得 'var' 并应用 Log.i(var);在 MainActivity

标签: java javascript android webview


【解决方案1】:

试试这个

static String var="";

public void onCreate() {
webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(this, "HTMLOUT");
bt1.setOnClickListener(new OnClickListener(){
    public void onClick(View v){        
        for(int i=0;i<5;i++){
    webview.loadUrl("javascript:window.HTMLOUT.processHTML(document.getElementsByName('name')["+i+"].src);");
        }
    }
);
}

@JavascriptInterface
 public static void processHTML(String html){    
    var=html;
    Log.i("CODE : ",var);
 }     

这样,当执行 javascript 时,您的活动中的价值。

【讨论】:

  • 它有效,但我想在 MainActivity 中获取“JSI.var”。因为我在 MainActivity 中将 'JSI.var' 等同于 String 变量。
  • 但是如果你把所有的东西都放在MainActivity中,即使是processHTML方法,你也会得到你想要的。
猜你喜欢
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多