1

このコードをフィールドに入力したいのですが、エラーが発生します

Account[] accounts = AccountManager.get(this).getAccounts();
    for (Account account : accounts) {
      // TODO: Check possibleEmail against an email regex or treat
      // account.name as an email address only for certain account.type values.


      String possibleEmail = account.name;



    myWebView.setWebViewClient(new HelloWebViewClient());

    setTitleColor(Color.GRAY); //the title bar color
    myWebView.loadUrl("http://m.gmail.com");
    myWebView.loadUrl("javascript: {document.getElementById('id_email').value ='"+possibleEmail+"'};");


} 

このエラーが発生します

05-02 20:28:24.191:E / Web Console(1402):Uncaught TypeError:nullのプロパティ'value'を:1に設定できません

ご協力いただきありがとうございます

4

1 に答える 1

3

loadURLは非同期です。つまり、loadUrlを呼び出すとHTTPリクエストが開始されますが、ドキュメントがダウンロードされてレンダリングされる前にすぐに戻ります。表示されているエラーは、JavaScriptを早すぎて(ドキュメントがダウンロード、解析、およびレンダリングされる前に)実行しようとしているためです。

WebViewClientを使用し、ページの読み込みが完了するのを待ってからjavascriptを実行する必要があります。onPageFinishedコールバックを試してください。ただし、iFrameなどが原因で複数のコールバックが発生する場合があることに注意してください。

お役に立てば幸いです。

編集 キットカット以上をターゲットにしている場合は、Androidのバージョンに基づいて使用する方法にも注意する必要があります。次のコードは、はるかに優れた説明を提供します。

 if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
 {
        webView.evaluateJavascript(yourScript, null);
 }
 else
 {
       webView.loadUrl(yourScript);

 }
于 2012-05-03T00:50:14.640 に答える