Android:Html Anchor Link在webview中只能工作一次

Android:Html Anchor Link在webview中只能工作一次,第1张

概述在加载html内容和锚链接时,我在webview中面临一些奇怪的问题. 以下代码完美的锚标签,但只有一次. 第二次当我按下锚标签它不工作. protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.m 在加载HTML内容和锚链接时,我在webvIEw中面临一些奇怪的问题.
以下代码完美的锚标签,但只有一次.
第二次当我按下锚标签它不工作.
protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.mywebvIEw);        String HTML = "<HTML><body><p><a href='#C4'>See also Chapter 4</a></p><p><h2>Chapter 1</h2><p>This chapter explains ba bla bla</p><h2>Chapter 2</h2><p>This chapter explains ba bla bla</p><h2>Chapter 3</h2><p>This chapter explains ba bla bla</p><h2><a name='C4'>Chapter 4</a></h2><p>This chapter explains ba bla bla</p><h2>Chapter 5</h2><p>This chapter explains ba bla bla</p><h2>Chapter 6</h2><p>This chapter explains ba bla bla</p><h2>Chapter 7</h2><p>This chapter explains ba bla bla</p><h2>Chapter 8</h2><p>This chapter explains ba bla bla</p><h2>Chapter 9</h2><p>This chapter explains ba bla bla</p></body></HTML>";        String mime = "text/HTML";        String enCoding = "utf-8";        WebVIEw myWebVIEw = (WebVIEw)this.findVIEwByID(R.ID.webVIEw1);        myWebVIEw.loadDataWithBaseURL(null,HTML,mime,enCoding,null);    }

我试过this链接,但没有为我工作.

更新:

测试我的代码在各种设备中的结果.

加工
三星S Plus – > 2.3.4
三星galaxy Y – > 2.3.6
三星galaxy Tab – > 2.3.3
摩托罗拉Xoom – > 3.2

不工作
LG Optimus – > 2.2
DELL XCD35(中兴刀片) – > 2.2
3. HTC WildFire – > 2.2.1

这个 *** 作系统问题还是其他的?任何解决方案?

解决方法 问题是在Anchor链接点击后重新加载页面.

我使用了以下代码,

Assets文件夹中的chapters.xml

<HTML><body><p><a href="#C4">See also Chapter 4</a></p><p><h2><a name='C1'>Chapter 1<a></h2><p>This chapter explains ba bla bla</p><h2>Chapter 2</h2><p>This chapter explains ba bla bla</p><h2>Chapter 3</h2><p>This chapter explains ba bla bla</p><h2><a name='C4'>Chapter 4</a></h2><p>This chapter explains ba bla bla</p><h2>Chapter 5</h2><p>This chapter explains ba bla bla</p><h2>Chapter 6</h2><p>This chapter explains ba bla bla</p><h2>Chapter 7</h2><p>This chapter explains ba bla bla</p><a href="#C1">See also Chapter 1</a></body></HTML>

JAVA代码:第一路

public class MainActivity extends Activity {    WebVIEw myWebVIEw;    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        myWebVIEw = new WebVIEw(this);        myWebVIEw.getSettings().setJavaScriptEnabled(true);        myWebVIEw.loadUrl("file:///androID_asset/chapters.HTML");        setContentVIEw(myWebVIEw);        final GestureDetector gestureDetector = new GestureDetector(                new MyGestureDetector());        VIEw.OntouchListener gestureListener = new VIEw.OntouchListener() {            public boolean ontouch(VIEw v,MotionEvent event) {                return gestureDetector.ontouchEvent(event);            }        };        myWebVIEw.setontouchListener(gestureListener);    }    class MyGestureDetector extends SimpleOnGestureListener {        @OverrIDe        public boolean onSingleTapConfirmed(MotionEvent e) {            myWebVIEw.reload();            Log.i("","Reload");            return super.onSingleTapConfirmed(e);        }    }}

编辑JAVA代码:第二种方式 – 我已经尝试了这个东西instt ontouchListener,并为我工作正常.

public class MainActivity extends Activity {    WebVIEw myWebVIEw;    public static boolean flag = false;    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        myWebVIEw = new WebVIEw(this);        myWebVIEw.getSettings().setJavaScriptEnabled(true);        myWebVIEw.loadUrl("file:///androID_asset/chapters.HTML");        setContentVIEw(myWebVIEw);        myWebVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() {            public voID onPageFinished(WebVIEw vIEw,String url) {                if (url.contains("#") && flag == false) {                    myWebVIEw.loadUrl(url);                    flag = true;                } else {                    flag = false;                }            }        });    }}

从一个文件打开另一个HTML文件的锚点标签

myWebVIEw = new WebVIEw(this);        myWebVIEw.getSettings().setJavaScriptEnabled(true);        myWebVIEw.loadUrl("file:///androID_asset/1.htm");        myWebVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() {            @OverrIDe            public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw,String url) {                try{                chapter = url.substring(url.indexOf("#"),url.length());                url = url.substring(0,url.indexOf("#"));                }catch (Exception e) {                    chapter = "";                }                myWebVIEw.loadUrl(url);                return true;            }            public voID onPageFinished(WebVIEw vIEw,String url) {                if (!chapter.equalsIgnoreCase("") && flag == false) {                    myWebVIEw.loadUrl(url+chapter);                    flag = true;                } else {                    flag = false;                }            }        });        setContentVIEw(myWebVIEw);
总结

以上是内存溢出为你收集整理的Android:Html Anchor Link在webview中只能工作一次全部内容,希望文章能够帮你解决Android:Html Anchor Link在webview中只能工作一次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133749.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存