WebViewClientとURLバー、WebChromeClientとプログレスバー、を紐づけてWebページの繊維をブラウザっぽくみせる・・・。
Java Classを追加・・・。
WebViewClientの派生クラスCustomWebViewClient・・・。
コンストラクタにはMainActivityとWebFragmentを渡す・・・。
リンクをクリックすると、リンク先のURLがurlに渡されてここに来るので、mainActivity.setMenuUrlBarでURLバーにurlをセット・・・。
ロードの開始時は、webFragment.setProgressBarVisibilityをtrueにして表示・・・。
ロードの終了時は、webFragment.setProgressBarVisibilityをfalseにして非表示・・・。
MainActivity.setMenuUrlBar・・・。
WebFragment.setProgressBarVisibility・・・。
つづいて、
Java Classの、
WebChromeClientの派生クラスCustomWebChromeClient・・・。
コンストラクタの引数はWebFragment・・・。
進捗が変化した時、onProgressChangedが来るので、webFragment.setProgressでprogressをセットする・・・。
ここでprogressBar.setProgressに渡している・・・。
そして、WebFragmentのonCreateViewでは、
progressBarやwebViewを取得・・・。
webView.setWebViewClientでcustomWebViewClient、webView.setWebChromeClientでcustomWebChromeClientをセット・・・。
これでプログレスバーやリンク先の反映はだいたいできた・・・。
あとは、バックキーの動作・・・。
MainActivity.javaに、
onBackPressedを用意・・・。
webFragment.goBackがfalseならsuper.onBackPressedとなる・・・。
webView.canGoBackがtrueなら、webBackForwardListを取得し、webBackForwardList.getCurrentIndexでページ位置が1以上の場合、webView.goBackで戻る・・・。
このとき、前のurlであるprevUrlを取得しておいて、mainActivity.setMenuUrlBarでURLも戻してtrueを返す・・・。
そうでないならfalse・・・。
trueなら、上のようにページが1つ前に戻り、falseの場合、super.onBackPressedとなり、アプリは終了する・・・。
起動して、
URLを入力して、リターンキーを押すと、
プログレスバーが走り、
スポナビへ・・・。
さらに野球を押すと、
野球に・・・。
バックキーで、
スポナビに戻って、
さらにバックキーで、
Yahoo!トップに戻る・・・。
ここでバックキーを押すと、アクティビティが閉じる・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc