से एक मूल्य वापस करने के लिए addJavaScriptInterface का उपयोग करके, इसलिए मुझे पता है कि एक ही मुद्दे को संबोधित करने वाली अन्य पोस्ट हैं, और मुझे लगता है कि मैंने उन्हें पत्र में पालन किया है, लेकिन इसका कोई फायदा नहीं हुआ है। मैं जावास्क्रिप्ट के साथ बातचीत करने के लिए अपने ऐप को कैसे प्राप्त करना सीखने की कोशिश कर रहा हूं। मैं सिर्फ अपनी जावास्क्रिप्ट से अपनी गतिविधि में एक मूल्य वापस करने में सक्षम होना चाहता हूं।एंड्रॉइड- जावास्क्रिप्ट
public class JSExample extends Activity {
WebView mWebView;
String mString;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.mWebView);
mWebView.addJavascriptInterface(new ClsAccessor(), "accessor");
String html = getAssetsContent("jsinterface.html");
mWebView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);
// Log.d("YO!", mString);
}
private String getAssetsContent(String filename){
.....
}
private void closeStream(BufferedReader stream) {
.....
}
class ClsAccessor{
public void setValue(String value){
JSExample.this.mString = value;
}
}
यहाँ एचटीएमएल मेरी WebView कि जावास्क्रिप्ट मैं चलाने के लिए चाहते हैं द्वारा लोड फ़ाइल है::
<!DOCTYPE html>
<html>
<head>
<script language="javascript">
accessor.setValue('Hello!');
</script>
</head>
<body>
<h1>Testing</h1>
</body>
</html>
यह काम नहीं करता
यहाँ मेरी गतिविधि है। जब मैं "Log.d (" YO! ", MString) के साथ कोड चलाता हूं;" असम्बद्ध मुझे एक शून्य सूचक अपवाद मिलता है, जिसका अर्थ है कि जावास्क्रिप्ट ने कभी भी mString के लिए कोई मान निर्दिष्ट नहीं किया है। मैं क्या गलत कर रहा हूं?
आप एक समस्या में चला रहे हैं? –
ओह मूर्ख मुझे। हाँ मैं एक समस्या में भाग रहा हूँ। जब लाइन "Log.d (" YO! ", mString)" असम्बद्ध है मुझे एक NullPointerException मिलता है, जिसका अर्थ है कि mString को कभी भी मान निर्दिष्ट नहीं किया गया था, जिसका अर्थ जावा में जावास्क्रिप्ट का बाध्यकारी विफल रहा। तो मैं क्या गलत हूं? – aamiri