javascriptメソッドを呼び出すために、webviewからJavascriptInterfaceメソッドを呼び出しています。問題は、メソッドが結果値を取得する前に値を返すことです。では、UIスレッドからJavaScriptメソッドが実行されるまでreturnステートメントを待機させるにはどうすればよいですか。
Javascriptインターフェース
public class CordovaJSInterface {
Context cxt;
String returnValueFromJS="";
CordovaJSInterface(Context cxt){
this.cxt = cxt;
}
public void setReturnValueFromJS(String valueFromJS){
this.returnValueFromJS = valueFromJS;
}
@JavascriptInterface
public String performClick()
{
/*MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mainView.loadUrl("javascript:" + "getLocation()" + ";");
}
});*/
mainView.post(new Runnable() {
@Override
public void run() {
mainView.loadUrl("javascript:" + "getLocation()" + ";");
}
});
/**PROBLEM : Method returns variable returnValueFromJS
* before it is updated by getLocation() javascript method..
**/
return returnValueFromJS;
}
だから私は performClick() が最初にUIスレッドを完了させ、次に値を返すようにしたい.