Zinc #19 タブブラウザの導入

そろそろタブブラウザの導入をしてみる・・・。
これまでアクティビティ中心のアプリケーションになっていたが、今後はフラグメント中心のアプリケーションにしていく・・・。

f:id:BG1:20160719154327p:plain

Fragmentを追加・・・。

f:id:BG1:20160719154344p:plain

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に進捗をセット・・・。

f:id:BG1:20160719162723p:plain

上に"新しいタブ1"が表示されている・・・。

f:id:BG1:20160719162801p:plain

ちゃんとロードできる・・・。

f:id:BG1:20160719162843p:plain

スポナビも・・・。

f:id:BG1:20160719162908p:plain

履歴にも残ってる・・・。

f:id:BG1:20160719162924p:plain

ブックマーク登録もできる・・・。

f:id:BG1:20160719162942p:plain

ブックマークされている・・・。

f:id:BG1:20160719163001p:plain

履歴からYahooトップへ、

f:id:BG1:20160719163028p:plain

行けるし、

f:id:BG1:20160719163050p:plain

ブックマークからスポナビへも、

f:id:BG1:20160719163145p:plain

行ける・・・。

f:id:BG1:20160719163215p:plain

ブログで、

f:id:BG1:20160719163410p:plain

ページ内検索もできるし、

f:id:BG1:20160719163526p:plain

"←"で解除もされる・・・。

f:id:BG1:20160719163723p:plain

ダウンロードもできた・・・。

https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc