Резюме:
Проблема при попытке использовать веб-просмотр для открытия стандартного html-файла, расположенного в каталоге «assets». HTML-документ содержит привязки местоположения повсюду, и я пытаюсь перейти непосредственно к ним при открытии документа путем предоставления тега # в URL-адресе, предоставленном методу .loadUrl () объекта «WebView». Это работает корректно и согласованно в эмуляторе с уровнем API 7 (обновленная версия Android 2.1), но демонстрирует противоречивое поведение с эмулятором с уровнем API 10 (обновленная версия Android 2.3.3). Эти несоответствия также наблюдались на реальном устройстве Samsung Galaxy S2 с Android 2.3.3.
Замечания:
При уровне API 7 каждый раз, когда вызывается метод .loadUrl (), страница открывается, и документ располагается в правильном месте привязки, как указано в строке тега URL #.
На уровне API 10 при первой загрузке приложения в эмулятор или реальное устройство поведение метода .loadUrl () соответствует ожидаемому. Документ открывается в правильной позиции привязки. Но при каждом последующем вызове, когда в URL-адресе указывается строка тега URL #, документ открывается и появляется для прокрутки до самого конца текста на странице, игнорируя тег #tag. Исключением является случай, когда документ открывается только со стандартным URL-адресом без присоединенного суффикса #tag.
Соответствующие части кода:
a) OnCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.help_viewer);
engine = (WebView) findViewById(R.id.id_web_engine);
// note the “engine” is defined globally to the activity
}
b) OnResume:
protected void onResume() {
super.onResume();
//
//
engine.loadUrl("file:///android_asset/Simple_help_en.html#about_this_app”);
// works in API 7, inconsistencies with API 10
//
//
}
в) OnStop
OnStop () { //added in desperation - but made no difference
protected void onStop() {
super.onStop();
engine.clearCache(true);
engine.clearHistory();
engine = null;
}
Я очень плохо знаком с Android и чувствую, что что-то упустил, так как баланс вероятности предполагает, что скорее всего это ошибка в кодировании, а не ошибка в API. Я искал вопросы / ответы онлайн, но не смог найти соответствующий ответ. Может кто-нибудь указать на мою ошибку и способ решения этой проблемы?