package com.example.t022_thread_join_jsinterface;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
@SuppressLint("SetJavaScriptEnabled")
public class Mondai implements Runnable {
private Context context;
private int ans = 0;
private String mondaiStr;
private WebView wv;
private Thread thread;
private Handler mainHandler = new Handler();
private int counter = 0;
private String test_mondaiStr;
public Mondai(Context context) {
Log.v("Mondai Constractor", "Thread=" + Thread.currentThread().getId());
this.context = context;
mondaiStr = "1 + 4";
test_mondaiStr = "4*4";
wv = new WebView(context);
wv.getSettings().setJavaScriptEnabled(true);
wv.addJavascriptInterface(this, "android");
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
String str;
if (counter == 0) {
str = mondaiStr;
} else {
str = test_mondaiStr;
}
makeKaitou(str);
}
private void makeMondai() {
}
protected void makeKaitou(final String mondai) {
Log.v("Mondai makeKaitou", "Thread=" + Thread.currentThread().getId());
Log.v("Mondai makeKaitou", "mondai=" + mondai);
wv.loadData("", "text/javascript", null);
XXX
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
String script = "javascript:android.getAnswerFromJS(eval("
+ mondai + "));";
wv.loadUrl(script);
}
});
}
public int getAns() {
return ans;
}
public void getAnswerFromJS(final String answer) {
Log.v("getAnswerFromJS", "Thread=" + Thread.currentThread().getId());
Log.v("getAnswerFromJS","counter= "+counter+",answer="+answer);
ans = Integer.parseInt(answer);
if (counter == 0) {
thread = new Thread(this);
thread.start();
}
counter++;
mainHandler.post(new Runnable() {
public void run() {
Log.d("TAG", answer);
Toast.makeText(context, "getAnswerFromJS" + answer,
Toast.LENGTH_SHORT).show();
toast();
Main.setMondai(answer);
}
});
}
private void toast() {
Toast.makeText(context, "counter" + counter, Toast.LENGTH_SHORT).show();
}
}