要点:
尝试使用webview打开位于“assets”目录中的标准html文件时出现问题。 html文档包含整个位置锚点,我尝试通过在提供给“WebView”对象的.loadUrl()方法的URL中提供#tag来打开文档时直接导航到这些文件。这在API级别7(Android 2.1已更新)的模拟器中正常且一致地工作,但显示与API级别10(Android 2.3.3更新)的模拟器的不一致行为。在使用Android 2.3.3的真实设备Samsung Galaxy S2上也观察到了这些不一致。
观察:
对于API级别7,每次调用.loadUrl()方法时,页面都会打开,文档位于URL#Tag字符串中提供的正确锚点位置。
对于API级别10,第一次将应用程序加载到模拟器或实际设备时,.loadUrl()方法的行为与预期的一样。文档在正确的锚位置打开。但是在URL中提供URL#标记字符串的每个后续调用中,文档都会打开并显示为滚动到页面上文本的最底部,忽略#tag。例外情况是,只打开一个没有附加#tag后缀的标准URL的文档。
相关代码部分:
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
//
//
}
c)OnStop
OnStop () { //added in desperation - but made no difference
protected void onStop() {
super.onStop();
engine.clearCache(true);
engine.clearHistory();
engine = null;
}
我对Android很新,觉得我错过了一些东西,因为概率的平衡表明它更可能是编码错误而不是API中的错误。我在网上搜索了问题/答案,但无法找到相关答案。有人可以指出我的错误和解决这个问题的方法吗?