如何通过JSONArray从活动到HTML脚本? [英] How to pass JSONArray From Activity to Html Script?

查看:127
本文介绍了如何通过JSONArray从活动到HTML脚本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想 JSONArray 活动传递给 HTML脚本我想在下面的方式,但我无法得到的数据
HTML

I want to pass JSONArray From Activity to HTML Script I am trying in the below way but i'm unable to get the data in the HTML

活动: -

public class DayViewJSActivity extends Activity {

    WebView webviewobj;

    String jsurl, eventobj;

    JSONArray jArray = new JSONArray();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webviewobj = (WebView) findViewById(R.id.webView1);
        webviewobj.getSettings().setJavaScriptEnabled(true);
        webviewobj.addJavascriptInterface(new calendarInterface(),
                "Androidfunction");
        webviewobj.loadUrl("file:///android_asset/caljs.html");

        JSONObject jobject = new JSONObject();

        try {

            jobject.put("id", 1);
            jobject.put("start_date", "2012-10-22 09:00:00");
            jobject.put("end_date", "2012-10-22 10:00:00");
            jobject.put("text", "Demo scheduled");
            jobject.put("details:", "");

        } catch (JSONException e) {

            e.printStackTrace();
        }

        jArray.put(jobject);

        jsurl = "javascript:setData('" + jArray + "')";

        System.out.println("JSURL IS :" + jsurl);
        webviewobj.loadUrl(jsurl);

    }

    final class calendarInterface {

        calendarInterface() {

        }

        public void run() {

            webviewobj.loadUrl("javascript:setData( " + jArray + ")");
        }

    }

HTML: -

HTML:-

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <meta  name = "viewport" content = "initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no">
        <script src="Cjs/dhxscheduler_mobile_rec.js" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="Cjs/dhxscheduler_mobile_rec.css">

        <title></title>

       <script type="text/javascript">

        var eventData = null;


        function setData(eventobj)
        {

                eventData = eventobj;
        }

        dhx.ready(function(){
                dhx.ui.fullScreen();
                dhx.ui(
                    {
                        view:"scheduler",
                        id:"scheduler"  
                    }
                );

                var data = eventData;

                $$("scheduler").$$("buttons").setValue("day");
                $$("scheduler").parse(data);

            });

        </script>
    </head>
    <body>
    </body>
</html>

我应该如何获得 HTML 值从活动

推荐答案

这,只是简单的方式,假设你有以下活动code。与界面,看看下面code ...

Here it is, Just simple way, suppose you have following code of activity with interface, look following code...

public class htmldecoder extends Activity implements OnClickListener,TextWatcher
    {
    Button btsubmit; // this button in your xml file
    WebView wvbrowser;
    public void onCreate(Bundle savedInstanceState)
    {
                super.onCreate(savedInstanceState);
                    setContentView(R.layout.htmldecoder);



        btsubmit=(Button)findViewById(R.id.btsubmit);
        btsubmit.setOnClickListener(this);

        wvbrowser=(WebView)findViewById(R.id.wvbrowser);
        wvbrowser.setWebViewClient(new HelloWebViewClient());
        wvbrowser.getSettings().setJavaScriptEnabled(true);
        wvbrowser.getSettings().setPluginsEnabled(true);
        wvbrowser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        MyJavaScriptInterface myinterface=new MyJavaScriptInterface();
        wvbrowser.addJavascriptInterface(myinterface,"interface");
        webView.loadUrl("file:///android_asset/simple.html");  //use one html file for //testing put your html file in assets. Make sure that you done JavaScript methods to get //values for html content in html file . 
   }
   public void onClick(View v)
{
    if(btsubmit==v)
    {

        webView.loadUrl("javascript:showalert()");// call javascript method.  
        //wvbr
    }
}

final class MyJavaScriptInterface {



        MyJavaScriptInterface() {

        }

        public void sendValueFromHtml(String value) {
           System.out.println("Here is the value from html::"+value);
        }

    }

}

如果你看看这个code,你会发现,我已经添加接口(MyJavaScriptInterface)到的WebView

If you look at this code you will find that, i have added interface (MyJavaScriptInterface ) to webview

wvbrowser.addJavascriptInterface(myinterface,"interface");

现在你需要的JavaScript写在HTML

Now you javascript needs to write in html

<script type="text/javascript">
    //<![CDATA[
    var n1;
    function callme(){
    n1=document.getElementById("FacadeAL").value;
    }
    function showalert(){
     window.interface.sendValueFromHtml(n1);// this method calling the method of interface which //you attached to html file in android. // & we called this showalert javasript method on //submmit buttton click of android. 
    }
    //]]>
    </script>

&安培;确保在HTML

& Make sure you calling callme like below in html

<input name="FacadeAL" id="FacadeAL" type="text" size="5" onblur="callme()"/>

希望,你就会明白它是如何工作。也许这将帮助你通过你的JSON阵列。

Hope, you will understand how its working. May this will help you to pass your json array.

这篇关于如何通过JSONArray从活动到HTML脚本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆