WebView loadUrl()中使用本地html文件和#tags - API 7和API 10的行为不一致

时间:2011-11-14 10:54:30

标签: android webview

要点:

尝试使用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中的错误。我在网上搜索了问题/答案,但无法找到相关答案。有人可以指出我的错误和解决这个问题的方法吗?

0 个答案:

没有答案