Findall / FindAllAsync在android 4.1 jelly bean上无法正常工作

时间:2012-10-24 13:36:45

标签: android webview

我有一个拥有webview的小型Android应用程序。在android 2.2,2.3中,我可以使用findAll在这个webview上进行搜索,它工作得很好,突出显示被搜索的单词并滚动到匹配的位置。

在android 4.0.X中,搜索工作并滚动正常,但没有突出显示(使用findAll)。

在android 4.1中,使用findAll或findAllAsync,它并不重要,搜索根本不能正常工作。在我的测试中,它执行搜索,但不会滚动到匹配的位置,而是返回到页面的顶部,这很荒谬。它甚至突出了这场比赛,但是从可用性的角度来看,无论是在webview上的位置都是无用的。

这是源代码:

//////////////////////////////
// for android 2.2, 2.3, 4.0.x
//////////////////////////////
myContent.findAll(findBox.getText().toString());
try{
    //Can't use getMethod() in android 4.0.3 as it's a private method
    for(Method m : WebView.class.getDeclaredMethods()){
        if(m.getName().equals("setFindIsUp")){
            m.setAccessible(true);
            m.invoke(myContent, true);
            break;
        }
    }
}catch(Exception ignored){}

然后,使用目标api 16的另一种方法:

/////////////////////////////
// for android 4.1
/////////////////////////////
myContent.findAllAsync(findBox.getText().toString());
try{
    //Can't use getMethod() in android 4.0.3 as it's a private method
    for(Method m : WebView.class.getDeclaredMethods()){
        if(m.getName().equals("setFindIsUp")){
            m.setAccessible(true);
            m.invoke(myContent, true);
            break;
        }
    }
}catch(Exception ignored){}

关于如何使搜索工作在果冻豆上的任何想法?非常感谢你。

0 个答案:

没有答案