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の問題なのか等分からず困っています。
ご存知のかたがいらしたら、是非教えていただけませんでしょうか。
よろしくお願いいたします。