Ⅰ 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>