2011-06-15 8 views
4
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    Main(); 

} 
public void Main() 
{ 
    _linearLayout = new LinearLayout(this); 
    _webview = new WebView(this); 
    _linearLayout.addView(_webview, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
    setContentView(_linearLayout); 

    _webview.getSettings().setJavaScriptEnabled(true); 
    _webview.getSettings().setPluginsEnabled(true); 
    _webview.getSettings().setAllowFileAccess(true); 

    _webview.setWebChromeClient(new WebChromeClient()); 
    _webview.addJavascriptInterface(this, "Question"); 
    _webview.loadData(GetHTML(), "text/html", "utf-8"); 


} 

public String GetHTML() 
{ 
    String HTML = "" 
     + "<HTML>" 
     + "<HEAD>" 
     + "<TITLE>Radio Button onClick Handler</TITLE>" 
     + "<SCRIPT LANGUAGE=\"JavaScript\">" 
     +"function function1(colors) {" 
     +"var col = (colors.options[colors.selectedIndex].value);" 
     +" if (col) {" 
     +" document.bgColor = col;" 

     +" } " 
     +"</script>" 
     + "</HEAD>" 
     + "<BODY>" 
     +"<form>" 
     +"<b> Hello </b>" 
     //+"<select name=\"colors\" onChange=\"window.Question.function1(this);\">" 
     +"<select name=\"colors\" onChange=\"window.Question.OnJsClick_SelectedItem(' string value');\">" 
      +"<option value=\"white\" selected>White</option>" 
      + "<option value=\"cyan\">Cyan</option>" 
      + "<option value=\"ivory\">Ivory</option>" 
      + "<option id=\"myO\" value=\"blue\">Blue</option>" 

     +"</select>" 
     +"</form>" 
     + "</BODY>" 
     + "</HTML>"; 

    return HTML; 
} 

public void OnJsClick_SelectedItem(final String str) 
{ 
    mHandler.post(new Runnable() 
    { 
     //@Override 
     public void run() 
     { 
      getValue(str); 
     } 
    }); 
} 

public String getValue(String str) 
{ 
    _webview.loadUrl("javascript:function1(colors)"); 
    Toast.makeText(this, "Under getValue " + str, Toast.LENGTH_SHORT).show(); 
    return str; 

} 
} 

私を助けてください。この場合、JavascriptからAndroid WebViewにデータを渡す方法は?

+1

そこにティック)とアップノートを使用します。それはより多くの答えを得るのに役立ちます。 – Rishabh

答えて

2

あなたはこのようなものを使用する必要があります。

<select name="colors" 
    onChange="Question.OnJsClick_SelectedItem(this.options[this.selectedIndex].text)"> 
あなたが(そこにある参照してください彼らが有用であることが判明した場合、あなたの質問に対する答えを受け入れる必要があり
+0

ありがとうBuddyはとてもうまく働いています。たくさんありがとうございます –

+0

ようこそ! – Michael

3

コードをHTMLページとしてアセットフォルダに保存し、ロードURLメソッドを使用してウェブページを表示することができます。

mWebView.loadUrl("file:///android_asset/index.html"); 

編集には、JavaScriptを有効にするコメント

に応じ

WebView webView = (WebView) findViewById(R.id.webview); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 

ここで、ユーザーがボタンをクリックすると新しいインターフェースを使用してトーストメッセージを作成し、いくつかのHTMLとJavaScriptのです

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

は、Javaコードでこれを追加

public class JavaScriptInterface { 
    Context mContext; 

    /** Instantiate the interface and set the context */ 
    JavaScriptInterface(Context c) { 
     mContext = c; 
    } 

    /** Show a toast from the web page */ 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

資産フォルダからHTMLページを読み込み、loadURL経由で読み込むことができます。ここで私の問題は、Toast.Supposeの中のコンボボックスの選択された価値を得たいということです。ユーザーはアイボリーの色を選択し、次に私のトーストのプリントアイボリーを選択しました。あなたは私を助けることができますか? @Rishabh –

+0

私はwebview内でHTMLを読み込むことができますが、選択した値(コンボボックスで選択した値をjavascriptで書いたもの)をJavaコード –

+0

に渡して、javascript、HTMLにjavaコードを組み込むことができます。 それがうまくいくと受け入れる – Rishabh

関連する問題