コメント |
@DIV
public class MainActivity extends AppCompatActivity {
// *************************************************
// 変数定義
// *************************************************
// WebView のインスタンス
private WebView wv = null;
// 表示されているページの URL
private String startPage = null;
// 初期表示ページ
private String initPage = "http://winofsql.jp/001.php";
private Gson gson = null;
private Syain syain = null;
private Handler handler = null;
// *************************************************
// 画面定義から自動作成されるクラス
// ※ 名称は、xml のファイル名から作成されています
// *************************************************
private ActivityMainBinding binding = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// *************************************************
// 初期画面表示
// *************************************************
binding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
// 初回バインド
syain = new Syain();
binding.setUser(syain);
// Webページの JavaScript の呼び出し
MainActivity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText et = (EditText) MainActivity.this.findViewById(R.id.editText);
String scode = ((EditText) MainActivity.this.findViewById(R.id.editText)).getText().toString();
String callString = String.format("javascript:getWebPageData(\"%s\")", scode);
wv.loadUrl(callString);
}
});
// *************************************************
// 主要インスタンス
// *************************************************
handler = new Handler();
gson = new Gson();
// *************************************************
// WebView の目的ページ表示
// *************************************************
wv = (WebView) MainActivity.this.findViewById(R.id.webView);
// 目的のページを表示する
wv.loadUrl(initPage);
// *************************************************
// WebView の準備 ( 開始 )
// *************************************************
// Webページとのインターフェイスを登録します
// Webページ上からは、androidObject.toAndroid で呼ぶ事ができます
// (toAndroid は、@JavascriptInterface で登録したメソッド)
wv.addJavascriptInterface(new JavaScriptAccess(new JavaScriptAccess.OnGetWebDataListener() {
@Override
public void onWebGetDataListener(String textData) {
try {
syain = gson.fromJson(textData, Syain.class);
// 別スレッドから UI スレッドへのアクセス
handler.post(new Runnable() {
@Override
public void run() {
// *************************************
// 画面表示
// *************************************
binding.setUser(syain);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}), "androidObject");
// 必ず必要な JavaScript を有効にする設定
wv.getSettings().setJavaScriptEnabled(true);
// 必ず必要な設定
wv.setWebViewClient(new WebViewClient() {
// 必ず必要な設定 : 常に WebView 内でページを表示する為
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("lightbox", "shouldOverrideUrlLoading" + url);
return super.shouldOverrideUrlLoading(view, url);
}
// オプション : 表示されたページの URL を変数にセット
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.i("lightbox", "onPageStarted:" + url);
startPage = url;
}
// オプション : ページを表示し終わってから発生するイベント
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
// *************************************************
// WebView の準備 ( 終わり )
// *************************************************
}
@Override
protected void onStop() {
super.onStop();
wv.clearHistory();
wv.clearCache(true);
Log.i("lightbox", "onStop");
}
}
@END |