安卓2.2中webview搜索问题

9

我在我的活动中有一个Webview。现在,当我使用WebView.findAll()方法在Webview中搜索文本时,它不会突出显示匹配的单词。

在Android 1.6中,这个方法很好用,但在2.2中不起作用。


我有同样的问题。有找到任何解决方案吗? - Ilya Izhovkin
我没有找到任何解决方案。 - Brijesh Masrani
我需要一个4.0.3的解决方案。被接受的答案适用于2.2,但不适用于3.2或以上版本。jianwu_chen的答案适用于3.2,但不适用于4.0.3。 - Mike Keskinov
大家好,有人有这个问题的解决方案吗? - user4232
2个回答

15

关于这个问题在Android问题跟踪器上有记录:http://code.google.com/p/android/issues/detail?id=9018

我在WebView.findAll()之后加入了下面的代码,它使得高亮功能可以正常使用:

try
{
    Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
    m.invoke(webView, true);
}
catch (Throwable ignored){}

1
这听起来像是一种不好的做法。但它确实有效!谢谢。 - Peter Fortuin
我这里遇到了一个问题。我的文本被高亮显示,但是findAll()方法返回0。我不明白为什么??无论我使用哪个字符串,它们都能正确地高亮显示,但是findAll()方法总是返回0。任何帮助将不胜感激 :) - Antrromet

8
在Android 4.0.3中,似乎setFindIsUp是一个私有方法。因此,上面的代码将不起作用。由于getMethod()方法不会返回私有方法,以下是一种解决方法,可以调用在4.0.3版本中有效的私有方法:
try{
    //Can't use getMethod() as it's a private method
    for(Method m : WebView.class.getDeclaredMethods()){
        if(m.getName().equals("setFindIsUp")){
            m.setAccessible(true);
            m.invoke(view, true);
            break;
        }
    }
}catch(Exception ignored){}  

尽管这段代码成功找到了“setFindIsUp”,但它似乎对我不起作用。在4.0.3中未出现高亮显示,但在2.2中(使用此代码)有。 - Mike Keskinov
抱歉,它适用于2.2和3.2,但不适用于4.0.3!我需要一个适用于4.0.3的解决方案! - Mike Keskinov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接