您的位置:首页 > 移动开发

在Fragment中重写返回键以及WebView加载重定向页面返回问题

2015-07-25 17:28 567 查看
首先我是实现一个PagerView的页面滑动效果,并在里面添加了两个Fragment当作子页面。其中一个Fragment中使用WebView显示网页。

于是遇到了这样的问题:

1、使用网页的时候,从一个页面跳到另一个页面,当想返回上一个页面时,点击返回按钮,应用直接就退出了。

2、解决问题1之后,WebView加载了一个重定向的页面,点击返回按钮页面无法正常返回,多次点击才能返回。

问题1:

其实就是重写onKeyDown 方法,但是Fragment类没有onKeyDown方法,怎么办呢,就在MainActivity中重写。

如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(currentIndex==1){
WebFragment.clickBack(keyCode, event);
return true;
}
return super.onKeyDown(keyCode, event);
}
可以看到,在MainActivity的onKeyDown方法中,当页面处在有WebView的页面时(currentIndext==1),我调用了WebFragment的clickBack方法并传递keyCode和event两个参数。
是的,我在WebFragment中添加了一个静态方法clickBack,接收MainActivity传来的keyCode和event参数,这样就可以自定义onKeyDown方法了。如下:

public static boolean clickBack(int keycode,KeyEvent event){
if(keycode==KeyEvent.KEYCODE_BACK&&webView.canGoBack()){
webView.goBack();
}
return true;
}
这样当用户点击返回按钮时,WebView的页面就会goBack了。

问题2:

只要重写WebViewClient里面的shouldOverrideUrlLoading方法即可,如下:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
return false;
}
是的,就这么简单,只要返回false就行了。我也不知道为什么,这是从别人那里看来的。

注:以上的方法是我进行了大量搜索之后查到的最简单的解决办法,可能不是最好的解决办法,网络上也还有其他许多针对这两个问题的解决办法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: