[英]How to handle webview back press in fragment
我想在Web视图中向后按功能以转到Web视图中的上一页(片段)...
我尝试添加以下无效的代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
if(Wv.canGoBack()){
Wv.goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
我该如何解决?
这对我有用
public class MyWebView extends Fragment {
private WebView mWebView;
private View rootView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1:{
webViewGoBack();
}break;
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.testwebview, null);
mWebView = (WebView)rootView.findViewById(R.id.webview);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.getSettings().setBuiltInZoomControls(false);
mWebView.loadUrl("myurl...");
mWebView.setOnKeyListener(new View.OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == MotionEvent.ACTION_UP
&& mWebView.canGoBack()) {
handler.sendEmptyMessage(1);
return true;
}
return false;
}
});
return rootView;
}
private void webViewGoBack(){
mWebView.goBack();
}
}
在您的活动中获取Fragment
的实例,并覆盖onBackPressed
方法。
@Override
public void onBackPressed(){
if(fragment.webView.canGoBack()){
fragment.webView.goBack();
} else{
super.onBackPressed();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.