首先我是实现一个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就行了。我也不知道为什么,这是从别人那里看来的。
注:以上的方法是我进行了大量搜索之后查到的最简单的解决办法,可能不是最好的解决办法,网络上也还有其他许多针对这两个问题的解决办法。