在安卓中顯示html頁面可以使用WebView控件,那么如何從WebView中動態地獲取到數據呢。其實很簡單。先上效果圖
WebView中嵌入的范圍選擇器
Android Log中實時獲取到了數據
第一步:自定義一個類,它的方法的參數是從js中獲取的數據,方法體是Android對數據做的處理。
class JavaInJS {
@android.webkit.JavascriptInterface
public void showHeight(String html) {
Log.e("data", "height: " + html);
}
@android.webkit.JavascriptInterface
public void showAge(String html) {
Log.e("data", "age: " + html);
}
}
第二步:給webView添加addJavascriptInterface方法。 給它傳兩個參數,一個是剛才寫的類的實例,一個是這個類的實例名,這個名字會在js代碼中被用到
View contextView = inflater.inflate(R.layout.fragment_info_love,container,false);
webView = (WebView) contextView.findViewById(R.id.fragment_info);
webView.getSettings().setJavaScriptEnabled(true);
//JavaInJS是自己寫的一個類, "javaInJS"是JS中這個類的實例名
webView.addJavascriptInterface(new JavaInJS(), "javaInJS" );
//這句也是必須的
webView.setWebChromeClient(new WebChromeClient(){});
webView.loadUrl("file:///android_asset/love_setting.html");
第三步:在JS代碼中調用第一步中寫的方法
當選擇器滑動的時候會觸發onstatechange方法,我在onstatechange方法中調用
window.在第二步中起的實例名.方法(需要傳的數據)
就搞定啦!
$('#height-slider').jRange({
from: 140,
to: 220,
step: 1,
format: '%s',
width: 300,
showLabels: true,
showScale: false,
isRange : true,
theme: "theme-blue",
onstatechange: function(){
$('#heightR').html($('#height-slider').val().replace(',',' - '));
//在js中調用java代碼,傳數據
window.javaInJS.showHeight($('#heightR').html());
}
});