我有一个像这样的webview片段类:
public class WebviewFragment extends Fragment {
private WebView mWebView;
private String mFile;
private EditText mSearch;
private int mOccurrence;
private String mKeyword;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.webview_fragment, container, false);
mSearch = (EditText) getActivity().findViewById(R.id.search_bar_edit_text);
mSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
fulltextSearch(s.toString());
}
});
mWebView = (WebView) root.findViewById(R.id.webview);
mWebView.loadUrl(mFile);
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.requestFocus();
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
});
return root;
}
@Override
public void onStart() {
super.onStart();
if (mOccurrence >= 0 && mKeyword != null) {
scrollTo(mOccurrence, mKeyword);
}
}
private void scrollTo(int occurrence, String keyword) {
fulltextSearch(keyword);
for (int i = occurrence; i >= 0; i--) {
mWebView.findNext(true);
}
}
public void fulltextSearch(String text) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mWebView.findAll(text);
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mWebView.findAllAsync(text);
}
}
public void findPrev() {
mWebView.findNext(false);
}
public void findNext() {
mWebView.findNext(true);
}
当我点击EditText(mSearch)时,它的工作正常。它显示出现的颜色输出。我需要的是滚动到已定义的关键字出现。当我从scrollTo调用方法时,问题就开始了。它没有显示,没有任何反应。通过调试,我知道,theese函数实际上是调用的,没有任何结果的芽...没有任何反应。我究竟做错了什么?或者这是一个错误?
如果有更好的方法滚动到特定的出现,我会感激不尽。
答案 0 :(得分:1)
这是示例尝试这可能是使用完整
答案 1 :(得分:0)
寻找其他人的解决方案。如何修改onStart()方法:
@Override
public void onStart() {
super.onStart();
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (mOccurrence >= 0 && mKeyword != null) {
scrollTo(mOccurrence, mKeyword);
}
}
});
}