[WebView].loadUrl("javascript:実行する処理");こんな形で呼び出すと、表示されているWebページそのものは変わらずに、指定したJavaScriptの処理だけをロードすることができます(ロードしたスクリプトはそのまま実行されます)。
web.loadUrl("javascript:showDate('" + y +このようにして、loadUrlでJavaScriptのshowDate関数を呼び出しています。後は、この関数内で、受け渡されたテキストをそのまま<p>タグに表示して作業完了、というわけです。
"/" + m + "/" + d + "')");
※リストが表示されない場合
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(); } }
<< 前へ |