WebViewでのリダイレクト後の戻るについて

1,691 views
Skip to first unread message

cocoa

unread,
Nov 30, 2011, 12:52:30 AM11/30/11
to 日本Androidの会
初めましてcocoaと申します。
よろしくお願いします。


現在Android3.2.1のタブレットで、WebViewを使用した
アプリケーションを作成しています。
goBackメソッドでブラウザの戻るボタンを実装しているのですが、
リダイレクト等でページが遷移する場合、戻るボタンの押下で、リダイレクト元に
戻ってしまい、再度リダイレクト先が表示されてしまいます。

A → B → C
AでURLをクリック後Bに移動し、その後自動的にCに移動するような形です。
戻るを押してもBから直ぐにCに移動してしまうため、連打しないと戻れません。

回避策として、WebViewClient#shouldOverrideUrlLoadingメソッド内で
getHitTestResultメソッドにより、URLがクリックされての移動なのか、
自動的な移動なのか判断し、goBackメソッド使用後に自動的な移動が
起きた場合、URLを読み込まずにさらにgoBackメソッドを使用するという
方法をとっていました。
しかしこの方法では、Bに戻った後CのURLが自動で読み込まれる時に、
getHitTestResultメソッドの結果がAでURLをクリックしたものになる場合があり、
上手く戻れない場合があります。

-----------------------------------------------------------------------------------------------------------
@Override
public boolean shouldOverrideUrlLoading( WebView view, String url )
{
if ( isBack )
{
isBack = false;
if ( 0 == webView.getHitTestResult().getType() )
{
webView.goBack();
return true;
}
}
view.loadUrl( url );
Log.d( "Web", "Load " + url );
return true;
}
----------------------------------------------------------------------------------------------------------------

ソースは上記のようになっております。
isBackはgoBackメソッド後かどうかの判定になっています。


リダイレクト等が起きても、ループにならずに済むような方法を
模索しておりますので、皆様のお知恵を貸していただけないかと
思っております。
よろしくお願いします。

Reply all
Reply to author
Forward
0 new messages