2010-11-22 6 views
0

アンドロイド文字列値を返しますdoesntのボタンクリックで次のメソッドを書く。私はjavascriptのファイルから呼んでいるこのボタンをクリックしてイベント:addJavascriptInterfaceは、私はアンドロイドの私のJavaScriptファイル内の文字列変数を抽出するために、次のコードを使用してい

refuse.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Log.v(LOG_TAG, "variable=" + clsVariable); //This shows me null 
} 
}); 
wbvw = (WebView) findViewById (R.id.webvw); 

wbvw.setWebViewClient(new HelloWebViewClient()); 
    wbvw.getSettings().setJavaScriptEnabled(true); 

    WebSettings ws = wbvw.getSettings(); 
    ws.setJavaScriptEnabled(true); 
    wbvw.addJavascriptInterface(clsVariable, "clsVariable"); 
    wbvw.loadUrl("http://www.sbc.co.in/projects/AndroidTest.html"); 
} 

私は、このプラットフォームだけでなく、javascriptingに新たなんです。

私は間違っているとは何ですか?誰でも助けてくれますか?

Thanx事前に。

答えて

6

addJavascriptInterface()を誤って使用したようです。このメソッドは、いくつかのJavaオブジェクトをjavascriptに公開することを可能にします。その後、javascriptを使用してオブジェクトのメソッドを呼び出すことができ、これらの呼び出しは「実際の」Javaオブジェクトに転送されます。たとえば、あなたはJavaフィールドにアクセスするには、このような入れ子になったクラスを宣言することができます。

class ClsAccessor { 
    public void setValue(String value){ 
      YourOuterClassName.this.clsVariable = value; 
    } 
} 

その後addJavascriptInterface()メソッドにクラスのインスタンスを渡しますに値を設定し、その後

wbvd.addJavaScriptInterface(new ClsAccessor(), "accessor"); 

あなたのクラスのフィールドは、あなたがJavaScriptからaccessorオブジェクト上のsetValue()メソッドを呼び出す必要があります(クリックハンドラ上の例の場合):のJavaの呼び出しになります

accessor.setValue('vikrant'); 

のsetValue () 'とあなたのフィールド変数が設定されます。

スニペットは正確ではないことがありますが、私は自分の頭から直接入力しています:)しかし、あなたは原則を得るべきです。希望が役立ちます。

+0

私はそれを行いましたが、依然として変数にアクセスできませんでした。これは「変です。私はその変数をどの関数の外にも設定しようとしました。私が達成しようとしているのは、私のアンドロイドクラスのjavascript変数値を読みたいということです。 – neha

+0

これを説明する時間を取ってくれてありがとうKonstantin Burovありがとう。今私はこのことについて何を理解しています。 – neha

+0

あなたは大歓迎です:) –

関連する問題