當前位置:首頁 » 網頁前端 » web系統如何設計回退
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web系統如何設計回退

發布時間: 2022-12-28 08:57:27

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