WebView内のアンカーリンクに正しくジャンプしない

1,488 views
Skip to first unread message

坂元就

unread,
May 31, 2012, 5:25:18 AM5/31/12
to android-g...@googlegroups.com

Androidアプリ開発をしている大学生のnaruと申します。

(Android,Javaともに初心者です。)


現在、読み物(ハンドブック)的なアプリを作成しています。

ハンドブックの構成としては以下のようになっていて、


1 大項目

 A 中項目

 B 中項目

 C 中項目


2 大項目

 D 中項目

 E 中項目

 F 中項目


3・・・

 G ・・・


大項目単位でhtmlファイルをつくり、アプリ内に設置してWebView

を使用したアクティビティ内に表示させています。


「1」という大項目のhtmlファイル内に、「A」「B」「C」という

中項目があって、中項目それぞれにアンカーを指定しておいて、

目次のページから該当の中項目へジャンプさせたいのですが、なぜか

指定した場所に飛ばず、HTMLの最下部が表示されて困っています。


もともと書いていたコードは以下です。


 final String path = getIntent().getStringExtra(EXTRA_PATH);


if (path == null) {


 throw new IllegalStateException();


}


final WebView webView = new WebView(getApplicationContext());


final String Url = "file:///android_asset/" + path;


webView.getSettings().setDefaultTextEncodingName("UTF-8");


webView.getSettings().setJavaScriptEnabled(true);


webView.loadUrl(Url);


setContentView(webView);



で、解決策として下記のサイトを参考に、


http://stackoverflow.com/questions/3039555/android-webview-anchor-link-jump-link-not-working


以下のようにUrlをロードするまでの時間を遅らせてみました。


 final String path = getIntent().getStringExtra(EXTRA_PATH);


if (path == null) {


 throw new IllegalStateException();


}


final WebView webView = new WebView(getApplicationContext());


final String Url = "file:///android_asset/" + path;


webView.getSettings().setDefaultTextEncodingName("UTF-8");


webView.getSettings().setJavaScriptEnabled(true);



 Timer timer = new Timer();


timer.schedule(new TimerTask() {


 @Override


 public void run() {


 webView.loadUrl(Url);


 }



 }, 400);


setContentView(webView);



すると、アプリ初回起動時の1度目の画面遷移はダメで、2回目以降の

画面遷移では指定したアンカーリンクの場所に飛ぶようになりました。


なぜ初回起動時のみダメなのか、具体的な方法が見つからず、android

の仕様の問題なのかjavaの問題なのか等分からず困っています。


ご存知のかたがいらしたら、是非教えていただけませんでしょうか。

よろしくお願いいたします。

坂元 就

unread,
May 31, 2012, 5:15:15 AM5/31/12
to android-g...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages