安卓学习笔记---Fragment 里面加webview 监听onback事件(WebView的返回以及整个退出事件)

最近我在做Fragment里面嵌套WebView的数据,对如何监听webview返回,与整个退出界面不是很懂,百度之后,也有一些方法,但是总是不能完美解决问题,在看到这篇博客之后,按照方法,完美解决,分享出来;

转载博客地址:

http://blog.csdn.net/qq_27665781/article/details/49904055


*因为搞Android没多久所以对Fragment 不是很熟悉,然后在做个项目,项目里面用了Fragment,在Fragment里面用了webview,一开始还好挺好做的,做的最后就准备收尾了,也就是细节的一些处理,在处理每个webview的back事件的时候出了个问题,我当时一心想在Fragment里面监听back事件做处理,也在网上找了很多资料,发现有几个还是可以在Fragment里面监听到back事件的但是如果你在里面写 webview.goback是没有用的先把代码贴出来在Fragment里面监听back:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    getView().setFocusableInTouchMode(true);
    getView().requestFocus();
    getView().setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
                Log.e("gif--","fragment back key is clicked");
                webview.goBack();   //这方法没用的哦
                getActivity().getSupportFragmentManager().popBackStack("gifPageTwoFragment", FragmentManager.POP_BACK_STACK_INCLUSIVE);
                return true;
            }
            return false;
        }
    });
}

一下是我自己项目里面的代码:

// 菜单、返回键响应
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK)
      {
         Fragment fragment=getSupportFragmentManager().findFragmentById(R.id.main_fragment);
          if(fragment==home_fragment)
          {
              exitBy2Click();   //这是退出方法
          }else if(fragment==style_fragment)
          {
              webView=(WebView) fragment.getView().findViewById(R.id.style_webView);
              iswebviw();
          } else if(fragment==diamonds_fragment)
          {
              webView =(WebView) fragment.getView().findViewById(R.id.diamonds_webView);
              iswebviw();
          }
          else if(fragment==shoppingCart_fragment)
          {
              webView =(WebView) fragment.getView().findViewById(R.id.shopping_webview);
              iswebviw();
          }else if(fragment==my_fragment)
          {
              exitBy2Click();   //这是退出方法
          }

      }
      return false;
  }
//返回事件还有双击推出的方法
  public void iswebviw()
  {
      if(webView.canGoBack())
      {
          webView.goBack();
      }
      else{
          exitBy2Click();   //这是退出方法
      }

  }
  //双击退出方法
  private void exitBy2Click() {
      if (!isEx) {
          isEx = true;
          ToastUtil.invokeShortTimeToast(this, "再按一次退出应用");
          handler.sendEmptyMessageDelayed(0, 2000);
      } else {

          // 删除用户信息
          LoginControllor.clearLastLoginInfo();

          // 停止服务
          stopService(new Intent(this, MessageService.class));

          //清除缓存
          ImageLoader.getInstance().clearDiskCache();
          ImageLoader.getInstance().clearMemoryCache();

          this.sendBroadcast(new Intent().setAction(AbstractBaseActivity.ACTION_EXIT));
          finish();
          System.exit(0);


      }
  }
希望有用。

 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值