[WebView].loadUrl("javascript:実行する処理");こんな形で呼び出すと、表示されているWebページそのものは変わらずに、指定したJavaScriptの処理だけをロードすることができます(ロードしたスクリプトはそのまま実行されます)。web.loadUrl("javascript:showDate('" + y +
"/" + m + "/" + d + "')");このようにして、loadUrlでJavaScriptのshowDate関数を呼び出しています。後は、この関数内で、受け渡されたテキストをそのまま<p>タグに表示して作業完了、というわけです。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
package jp.tuyano.sample;
import java.util.Calendar;
import android.app.*;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.*;
public class MySample extends Activity {
public WebView webview01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview01 = (WebView)findViewById(R.id.WebView01);
webview01.getSettings().setJavaScriptEnabled(true);
webview01.addJavascriptInterface(new JSObj(this,webview01), "jsobj");
String data = "<html><head><script type=\"text/javascript\">" +
"function init(){ jsobj.showDlg(); }" +
"function showDate(msg){document.getElementById('msg').innerHTML = msg;}" +
"</script></head><body onload=\"init()\">" +
"<h1>Sample</h1><p id=\"msg\">JavaScript test.</p></bod></html>";
webview01.loadData(data,"text/html","utf8");
}
}
class JSObj {
private Context context;
private WebView web;
public JSObj(Context c,WebView w){
context = c;
web = w;
}
public void showDlg() {
Calendar calendar = Calendar.getInstance();
int y = calendar.get(Calendar.YEAR);
int m = calendar.get(Calendar.MONTH);
int d = calendar.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog dlg = new DatePickerDialog(
context,new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view,
int y, int m, int d) {
web.loadUrl("javascript:showDate('" + y +
"/" + m + "/" + d + "')");
}
},y,m,d);
dlg.show();
}
}
| << 前へ |