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

首先我是实现一个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就行了。我也不知道为什么,这是从别人那里看来的。


      注:以上的方法是我进行了大量搜索之后查到的最简单的解决办法,可能不是最好的解决办法,网络上也还有其他许多针对这两个问题的解决办法。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值