【问题标题】:Android 2.2 webview search problemAndroid 2.2 webview 搜索问题
【发布时间】:2012-09-21 21:51:50
【问题描述】:

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

它在 Android 1.6 中运行良好,但在 2.2 中无法运行。

【问题讨论】:

  • 我也有同样的问题。找到解决方案了吗?
  • 不,我没有找到任何解决方案。
  • 我需要 4.0.3 的解决方案。接受的答案适用于 2.2,但不适用于 3.2 或更高版本。 jianwu_chen 的答案适用于 3.2,但不适用于 4.0.3。
  • 嗨,有人有解决这个问题的方法吗?

标签: android android-webview


【解决方案1】:

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){}

【讨论】:

  • 这听起来像是一种讨厌的方式。但它确实有效!谢谢。
  • 我在这里遇到了问题。我的文本突出显示,但 findAll() 方法返回 0。我无法理解为什么?我可以使用任何字符串,它会正确突出显示它们,但 findAll() 方法总是返回 0。任何帮助将不胜感激:)
【解决方案2】:

在 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 中出现(使用此代码)。
  • 对不起,它适用于 2.2 和 3.2,但不适用于 4.0.3!我需要 4.0.3 的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多