2011-10-20 1 views
-1

Android経由でJavaScriptとやりとりしようとしています。私はチュートリアルに続いて[ここ] [1]を見つけました。Androidのウィンドウは既に警告されています。JavaScriptのインターフェイス

しかし、私は値を渡すか、

webEngine=(WebView) findViewById(R.id.webengine);  
     webEngine.getSettings().setJavaScriptEnabled(true); 
     webEngine.addJavascriptInterface(this, "android");  
     webEngine.setWebViewClient(new WebViewClient()  
     { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       return false; 
      } 
     }); 
     webEngine.loadUrl("http://www.a11y.in/a11y_fs/"); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu, menu); 
     // TODO Auto-generated method stub 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
      // Handle item selection 

     switch (item.getItemId()) 
     { 
     case R.id.edit: 
      webEngine.loadUrl("javascript:var path =android.path();var newContent=android.newContent();var name = 'myname'; android.toast(name);); 
      return true; 

     case R.id.renarration: 

      return true; 

     default: 
     return super.onOptionsItemSelected(item); 
     } 
    } 

    public String path() 
{ 
    return xPath = "//H3[@id='header']"; 
} 
public String newContent() 
{ 
    return newContent ="my New Home"; 
} 

    public void toast(String x) 
    { 
     Toast.makeText(this, "hello from js"+x, Toast.LENGTH_LONG).show(); 
    } 

戻って値を取得することはできませんよその次warning.system.out.printlnも

WARN/KeyCharacterMap(310): No keyboard for id 0 
WARN/KeyCharacterMap(310): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
WARN/InputManagerService(66): Window already focused, ignoring focus gain of: [email protected] 

原因

が動作していない取得していますplz help

答えて

0

まず、これらのエラーメッセージはあなたのコードに関係しないので、無視することができます。引用符といくつかの誤りがあるようです

その後、

...そこに(もあなたの質問にシンタックスハイライトを壊した)一致していない...またはそれは間違ってそれを解析だけで、このサイトであるかもしれません

私はまた、あなたのクラスでは、javascriptからアクセスしている "パス"メソッドが表示されません。同様に、 "newContent"メソッド。

+0

返信いただきありがとうございます。今すぐ自分のコードを更新しました。私は関数のパスと新しいコンテンツを置くことを忘れていました。二重引用符を一重引用符に変更しました。それでも動作していません。編集メニューボタンをクリックすると、最後の警告が表示されます。 – Droidme

+0

私の懸念もsystem.out.printlnもdosentの仕事です。メソッドがアクセスされていないのですか? – Droidme

+0

あなたのコードを試してみましたが、それは私にとってはうまくいくようでした。「hello from jsmyname」トーストメッセージが表示されます。私が必要とした変更は、1)loadUrl呼び出しで欠落している引用符を追加する、2)メニューXMLファイルを作成しなかったので、コードからメニュー項目を作成した、3)JavaコードからWebViewインスタンスを作成したレイアウトをロードしてレイアウト内に配置する代わりに、しかし、私はこれらの変更が影響を及ぼさないと考えています。最初の修正なしではコンパイルできず、最後の2つの修正はWebViewに影響しませんでした。 –

関連する問題