在webview中Html Anchor Link只能执行一次-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

在webview中Html Anchor Link只能执行一次

小旋风柴进 2016-03-11 17:09:38 1576

我用anchor link加载html内容时,在webview中遇到一些奇怪的问题。
以下代码对于 anchor标签可以很好的执行,但是只能执行一次。
当我再次点击 anchor标签时,就不能执行。

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);

    }

我在不同的设备装置中测试代码。
可以执行:
1. Samsung S Plus --> 2.3.4
2. Samsung Galaxy Y --> 2.3.6
3. Samsung Galaxy Tab --> 2.3.3
4. Motorola Xoom --> 3.2
不能执行:
1. LG Optimus --> 2.2
2. DELL XCD35(ZTE Blade) --> 2.2
3. HTC WildFire --> 2.2.1
这是操作系统的问题还是别的问题? 如何解决呢?

Android开发 流计算
分享到
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 18:59:40

    问题是想点击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
    是用下面代码代替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;
                    }
                }
    
            });
        }
    }
    0 0
大数据
使用钉钉扫一扫加入圈子
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题