Ⅰ fragment监听返回键(webview回退上一个页面)
1、创建自定义接口类
public interface BackHandleInterface {
void onSelectedFragment(BackHandleFragment backHandleFragment);
}
2、创建一个自定义Fragment类
public abstract class BackHandleFragmentextends BaseFragment{
private ;
/**
* 所有继承BackHandledFragment的子类都将在这个方法中实现物理Back键按下后的逻辑
* FragmentActivity捕捉到物理返回键点击事件后会首先询问Fragment是否消费该事件
* 如果没有Fragment消息时FragmentActivity自己才会消费该事件
*/
public abstract boolean onBackPressed();
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getActivity()instanceof BackHandleInterface){
this.backHandleInterface = (BackHandleInterface)getActivity();
}else{
throw new ClassCastException("Hosting Activity must implement BackHandledInterface");
}
}
@Override
public void onStart() {
super.onStart();
backHandleInterface.onSelectedFragment(this);
}
}
3、在fragment的容器Activity中
1)声明变量属性
private ;
2)activity实现接口(implements BackHandleInterface),重写回调方法
@Override
public void onSelectedFragment(BackHandleFragment backHandleFragment) {
this.backHandleFragment = backHandleFragment;
}
3)重写onKeyDown()方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//if判断里面就调用了来自Fragment的onBackPressed()
//一样!!,如果onBackPressed是返回false,就会进入条件内进行默认的操作
if(backHandleFragment ==null || !backHandleFragment.onBackPressed()){
if(getSupportFragmentManager().getBackStackEntryCount() ==0){
/**
* 按返回键直接返回桌面,监听返回键,防止按了音量键也返回桌面
*/
if (keyCode == KeyEvent.KEYCODE_BACK){
Intent intent =new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
return true;
}
}
}
return super.onKeyDown(keyCode, event);
}
4、fragment继承自定义fragemnt,重写回调方法onBackPressed()
tip:因为我的项目中fragment是包含整个webview,需求是点击返回后,webview如果可以返回上一个页面就返回上一个页面
@Override
public boolean onBackPressed() {
if (webView.canGoBack()){
webView.goBack();
return true;
}else {
return false;
}
}
Ⅱ webview回退时如何保持原滚动位置
第一个,可以用多个WebView的方式实现,但占资源
第二个:点登录界面时,显示B界面,实现B界面是在A网页里面显示的一个层而已,并不是打开了新的网页。
Ⅲ webView页面回退与home回退冲突
webview有缓存啊//设置缓存模式webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//开启DOMstorageAPI功能webView.getSettings().setDomStorageEnabled(true);这样你就可以在返回前一个页面的时候不刷新了
Ⅳ android 怎么在webview上加回退按钮
可以使用FrameLayout布局,在webView上放置按钮
Ⅳ jsp 用户退出登录回退时网页过期
当退出时候,已经清空了session,但是当点击IE后退按钮时候,还能回去查看刚才页面
设置退出系统再点后退就显示页面过期的方法
可以设置回退时显示网页过期
这里用jsp来举例:
第一种,在jsp中加入如下代码:
<%
//设置无缓存
response.setHeader("progma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
%>
在html里面也可以加入
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
第二种:
<script language='javascript'>
history.go(1);
</script>