Fragment或WebView里监听返回键

本文介绍了一种在Android应用中处理Fragment内的WebView返回按键的方法。通过在Fragment的onCreateView方法中设置WebView的监听器,并重写onResume方法来获取焦点及监听返回按键,实现了对WebView返回行为的有效控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没有验证过,我的一个应用场景是在viewpager的一个fragment加载了h5需要拦截back处理。常识加了其它网络上方法的不不起效。于是乎就在activity里面做了处理

Fragment或WebView里监听返回键

 

思路主要是在onResume事件里处理按钮事件并进行判断。

如果使用了WebView则在onKey里处理返回按钮事件。

 

代码如下:

Java代码   收藏代码
  1. import android.os.Bundle;  
  2. import android.support.annotation.Nullable;  
  3. import android.support.v4.app.Fragment;  
  4. import android.support.v4.app.FragmentManager;  
  5. import android.view.KeyEvent;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.webkit.WebView;  
  10. import android.widget.RadioButton;  
  11.   
  12. /** 
  13.  * Created by Administrator on 2015/4/10. 
  14.  */  
  15. public class PostFragment extends Fragment{  
  16.     View rootView = null;  
  17.     WebView webViewForPost = null;  
  18.     //RadioButton radioButtonToPostList = null;  
  19.   
  20.     @Override  
  21.     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  
  22.         rootView = inflater.inflate(R.layout.post_layout, container, false);  
  23.         webViewForPost = (WebView) rootView.findViewById(R.id.webViewForPost);  
  24.         int index = Integer.valueOf(getArguments().get("index").toString());  
  25.         String strategy = "strategy"+(index+1)+".html";  
  26.         webViewForPost.loadUrl("file:///android_asset/"+strategy);  
  27.   
  28.         webViewForPost.setOnKeyListener(new View.OnKeyListener() {  
  29.   
  30.             @Override  
  31.             public boolean onKey(View v, int keyCode, KeyEvent event) {  
  32.                 if (event.getAction() == KeyEvent.ACTION_DOWN) {  
  33.                     if (keyCode == KeyEvent.KEYCODE_BACK ) {  
  34.                        //这里处理返回键事件  
  35.                     }  
  36.                 }  
  37.                 return false;  
  38.             }  
  39.         });  
  40.         return rootView;  
  41.     }  
  42.   
  43.   
  44.     @Override  
  45.     public void onResume() {  
  46.         super.onResume();  
  47.         getView().setFocusableInTouchMode(true);  
  48.         getView().requestFocus();  
  49.         getView().setOnKeyListener(new View.OnKeyListener() {  
  50.             @Override  
  51.             public boolean onKey(View v, int keyCode, KeyEvent event) {  
  52.   
  53.                 if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){  
  54.                     //这里处理返回事件  
  55.                 }  
  56.                 return false;  
  57.             }  
  58.         });  
  59.     }  
  60.   
  61. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值