読者です 読者をやめる 読者になる 読者になる

Zinc #8 リンク先URLをURLバーに反映

これまでURLバーに指定したページをWebViewに表示できたが、URLリダイレクトされた時にURLバーはリダイレクト先のURLを表示できない・・・。

f:id:BG1:20160704170912p:plain

Chromeに"http://yahoo.co.jp"でアクセスすると、

f:id:BG1:20160704171116p:plain

URLバーは"m.yahoo.co.jp"("http://m.yahoo.co.jp")に変わっている・・・。

しかし、

f:id:BG1:20160704171845p:plain

ここでBUTTON1を押しても、

f:id:BG1:20160704171901p:plain

URLは変わらない・・・。

HTTP省略は後でやるとしても、まず"http://m.yahoo.co.jp"を表示するようにしたほうがいいだろう・・・。

また、URLを指定されてBUTTON1で表示する場合はそのままでよかったが、表示したページ内のリンクをクリックした場合はリンク先のページが表示されても、URLバーが変わらない・・・。

SportsNaviにアクセスしても、

f:id:BG1:20160704172121p:plain

変わらないが、Chromeなら、

f:id:BG1:20160704172147p:plain

"m.sports.yahoo.co.jp"になる・・・。

このようにページ内のリンクをURLバーに反映させたい・・・。

WebViewのURLが上書き変更されるときは、WebViewClientのshouldOverrideUrlLoadingが呼ばれるので、そこを変更すればいい・・・。

shouldOverrideUrlLoadingで、findViewByIdでurlBarを取得して、setTextで引数のurlを指定する・・・。
(今回はAndroid7系("N")は考えずに上のほうのオーバーライドメソッドを修正・・・。)
これだけなのだが、今回匿名クラスでオーバーライドではなく、CustomWebViewClientを別クラスにしているので、Activityを格納するメンバactivityを用意して、そこからurlBarを取得している・・・。

activityは、MainActivityのonCreateで、

customwvを生成した後に、customwv.activityにthisを渡している・・・。

f:id:BG1:20160704173505p:plain

これでアクセスすると、

f:id:BG1:20160704173538p:plain

"http://m.yahoo.co.jp"になっていて、SportsNaviのリンクを押すと、

f:id:BG1:20160704173627p:plain

今度は、"http://m.sports.yahoo.co.jp"になっている・・・。

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