そろそろタブブラウザの導入をしてみる・・・。
これまでアクティビティ中心のアプリケーションになっていたが、今後はフラグメント中心のアプリケーションにしていく・・・。
Fragmentを追加・・・。
UIのXMLは作るが、メソッドとかはいい・・・。
activity_main.xmlは、
と身軽に・・・。
FragmentTabHostがタブを制御・・・。
TabWidgetがタブ部分・・・。
FrameLayoutのcontent、ここに動的にfragmentを挿入していく・・・。
ただし、今回は最初のタブfragment以外は作成しない・・・。
fragment_web_view_tab.xmlは、
tools:context="com.bgstation0.android.application.zinc.WebViewTabFragment"を指定し、このXMLはWebViewTabFragmentであることを決定しないといけない・・・。
(自由に他のクラスに使えないのがちょっと・・・。ただ、このフラグメントを複数作ることは可能・・・。)
中にはURLバーや、WebViewなどを移植・・・。
WebViewTabFragment.javaは、
FragmentからfindViewByIdできないので、inflater.inflateの戻り値のViewをfragmentViewに格納しておいて、そこからfindViewByIdしたり、CustomWebViewClientなどにthisを渡して、そちらからも使えるようにする・・・。
getActivityでMainActivityも・・・。
CustomWebViewClient、CustomWebChromeClientのセットもこっちに・・・。
button1.setOnClickListener、urlBar.setOnEditorActionListenerも・・・。
progressBar.setVisibilityも・・・。
当然リスナーも移す・・・。
MainActivity.javaは、
DBHelperとDownloadManagerは残しておいた・・・。
tabNoを初期値1として、"新しいタブ1"だけ追加する・・・。
ダウンロードのURLはこれまでwebViewからとっていたが取れない場合(ファイルをページとしてロードしてからダウンロードするなど)があるので、urlBarから取る方法だけにした・・・。
CustomWebViewClient.javaは、
MainActivityからもらったfragmentでurlBarやprogressBarの制御、getActivityを経由してDBの操作などをする・・・。
CustomWebChromeClient.javaも、
fragment.progressBarに進捗をセット・・・。
上に"新しいタブ1"が表示されている・・・。
ちゃんとロードできる・・・。
スポナビも・・・。
履歴にも残ってる・・・。
ブックマーク登録もできる・・・。
ブックマークされている・・・。
履歴からYahooトップへ、
行けるし、
ブックマークからスポナビへも、
行ける・・・。
ブログで、
ページ内検索もできるし、
"←"で解除もされる・・・。
ダウンロードもできた・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc