2012-04-11 9 views
9

मैं अपने एंड्रॉइड वेब व्यू से JSON- स्वरूपित डेटा को HTML पृष्ठ पर पास करने का प्रयास कर रहा हूं। हालांकि, ऐप्लिकेशन क्रैश जब भी मैं, मूल JSON डेटा है, जो मैं प्रारूप {"key":"data"}किसी वेबव्यू से JSON-स्वरूपित डेटा को HTML पृष्ठ पर कैसे पास करें

मेरे ऐप का उद्देश्य इस JSON डेटा की व्याख्या करने के लिए किया जाएगा के होने की उम्मीद कर रहा हूँ पार्स मूल्यों की एक सरणी में यह फार्म का प्रयास करते हैं, और इसे एक HTML पृष्ठ पर भेजें। क्या यह सही दृष्टिकोण है?

यहाँ मेरी WebView कोड

public class MyWebView extends Activity { 
    WebView mWebView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.web_view); 

     mWebView = (WebView) findViewById(R.id.webviewSch); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.addJavascriptInterface(this, "webConnector"); 
     mWebView.loadUrl("file:///android_asset/table.html"); 
    } 

    public String load() { 
     return "{\"key\":\"data\"}"; 
    } 
} 

यहाँ है ... और एचटीएमएल कोड है ...

<html> 
<head> 
<title>Test</title> 
<script type="text/javascript"> 

function loader() { 
    var jsonData = window.webConnector.load(); 
} 

</script> 
</head> 
<body onload="loader()"> 
Do nothing 
</body> 
</html> 

यहाँ लॉग बिल्ली है:

04-15 00:35:44.551: W/dalvikvm(442): JNI WARNING: jarray 0x4053f1a0 points to non-array object (Ljava/lang/String;) 
04-15 00:35:44.551: I/dalvikvm(442): "WebViewCoreThread" prio=5 tid=9 NATIVE 
04-15 00:35:44.551: I/dalvikvm(442): | group="main" sCount=0 dsCount=0 obj=0x4051bcc0 self=0x19b200 
04-15 00:35:44.551: I/dalvikvm(442): | sysTid=451 nice=0 sched=0/0 cgrp=default handle=1684280 
04-15 00:35:44.551: I/dalvikvm(442): | schedstat=(206004592 365607782 69) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.LoadListener.nativeFinished(Native Method) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.LoadListener.nativeFinished(Native Method) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.LoadListener.tearDown(LoadListener.java:1200) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.LoadListener.handleEndData(LoadListener.java:721) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.LoadListener.handleMessage(LoadListener.java:219) 
04-15 00:35:44.551: I/dalvikvm(442): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-15 00:35:44.551: I/dalvikvm(442): at android.os.Looper.loop(Looper.java:130) 
04-15 00:35:44.551: I/dalvikvm(442): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629) 
04-15 00:35:44.551: I/dalvikvm(442): at java.lang.Thread.run(Thread.java:1019) 
04-15 00:35:44.551: E/dalvikvm(442): VM aborting 
+0

पोस्ट अपने स्टैक ट्रेस: ​​आप इस कोड के साथ देख सकते हैं। – kabuko

+0

मैंने एमुलेटर को 4.0.3 में बदल दिया और यह अब मेरे लिए काम किया। – DBoy

उत्तर

8

मैं कॉपी अपने कोड को चिपकाया और यह काम करता है (कुछ भी नहीं दिखाया गया है क्योंकि आप डेटा नहीं दिखाते हैं) लेकिन जावास्क्रिप्ट से एंड्रॉइड में किए गए कॉलबैक को निष्पादित किया गया है ctly। आपके लॉग से

WebView mWebView = (WebView) findViewById(R.id.webView1); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.addJavascriptInterface(this, "webConnector"); 
    mWebView.addJavascriptInterface(this, "toaster"); 
    mWebView.loadUrl("file:///android_asset/table.html"); 
    } 

    public String load() { 
     Log.e("HelloJavascript","HelloJavascript"); 
     return "{\"key\":\"data\"}"; 
    } 

    public void print(String message){ 
     Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 
    } 

और एचटीएमएल

<html> 
    <head> 
    <title>Test</title> 
    <script type="text/javascript"> 

    function loader() { 
     var jsonData = window.webConnector.load(); 
     toaster.print(jsonData); 
    } 

    </script> 
    </head> 
    <body onload="loader()"> 
    Do nothing 
    </body> 
    </html> 
+0

उत्तर Addev के लिए धन्यवाद। मैंने आपके कोड की कोशिश की, लेकिन यह अभी भी क्रश करता है। हालांकि, जब मैंने एमुलेटर को 4.0.3 में बदल दिया, तो यह काम किया! – DBoy

+0

पता नहीं कि आप पहले क्या कर रहे थे, लेकिन मुझे लगता है कि जावास्क्रिप्ट इंटरफ़ेस में 2.3 – Maarten

+0

में एक बग है "Uncaught TypeError: window.webConnector.load एक फ़ंक्शन नहीं है", स्रोत: myaddress " क्या आपको पता है क्यों? – Naeim

संबंधित मुद्दे