1. 程式人生 > >在Fragment中重寫返回鍵以及WebView載入重定向頁面返回問題

在Fragment中重寫返回鍵以及WebView載入重定向頁面返回問題

首先我是實現一個PagerView的頁面滑動效果,並在裡面添加了兩個Fragment當作子頁面。其中一個Fragment中使用WebView顯示網頁。

於是遇到了這樣的問題: 

1、使用網頁的時候,從一個頁面跳到另一個頁面,當想返回上一個頁面時,點選返回按鈕,應用直接就退出了。

2、解決問題1之後,WebView載入了一個重定向的頁面,點選返回按鈕頁面無法正常返回,多次點選才能返回。

問題1:

         其實就是重寫onKeyDown 方法,但是Fragment類沒有onKeyDown方法,怎麼辦呢,就在MainActivity中重寫。

         如下:

        @Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if(currentIndex==1){
			WebFragment.clickBack(keyCode, event);
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
         可以看到,在MainActivity的onKeyDown方法中,當頁面處在有WebView的頁面時(currentIndext==1),我呼叫了WebFragment的clickBack方法並傳遞keyCode和event兩個引數。

        是的,我在WebFragment中添加了一個靜態方法clickBack,接收MainActivity傳來的keyCode和event引數,這樣就可以自定義onKeyDown方法了。如下:

      public static boolean clickBack(int keycode,KeyEvent event){
		if(keycode==KeyEvent.KEYCODE_BACK&&webView.canGoBack()){
			webView.goBack();
		}
		return true;
	}
        這樣當用戶點選返回按鈕時,WebView的頁面就會goBack了。

問題2:

       只要重寫WebViewClient裡面的shouldOverrideUrlLoading方法即可,如下:

                @Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			// TODO Auto-generated method stub
			return false;
		}
      是的,就這麼簡單,只要返回false就行了。我也不知道為什麼,這是從別人那裡看來的。

      注:以上的方法是我進行了大量搜尋之後查到的最簡單的解決辦法,可能不是最好的解決辦法,網路上也還有其他許多針對這兩個問題的解決辦法。

相關推薦

Fragment重寫返回以及WebView載入定向頁面返回問題

首先我是實現一個PagerView的頁面滑動效果,並在裡面添加了兩個Fragment當作子頁面。其中一個Fragment中使用WebView顯示網頁。 於是遇到了這樣的問題:  1、使用網頁的時候,從一個頁面跳到另一個頁面,當想返回上一個頁面時,點選返回按鈕,應用直接就退出

Fragment重寫返回以讓WebView使用返回功能

首先我是實現一個PagerView的頁面滑動效果,並在裡面添加了兩個Fragment當作子頁面。其中一個Fragment中使用WebView顯示網頁。 於是遇到了這樣的問題:  1、使用網頁的時候,從一個頁面跳到另一個頁面,當想返回上一個頁面時,點選返回按鈕,應用直接就退出了。 2、解決問題1之後,Web

mui同一個頁面按物理返回只關閉彈窗,不返回上一個頁面

若一個頁面中存在彈窗,在彈窗開啟的狀態下,點選物理返回鍵只要求關閉當前彈窗,而不是返回上一頁面,再次點選物理鍵時才會返回上一頁面,有以下解決方法。 step1:進入頁面時先禁用物理返回鍵,此時還能監聽到返回鍵,只是不執行返回 mui.init({ beforeback:func

android studio修改快捷以及實用的開發快捷,方便技巧

直接上圖,看了就明白: 1.開啟設定---->keymap 2.選擇哪個型別的快捷鍵,本人是eclipse過來的,還是沿用eclipse; 3.這裡是搜尋功能的地方,比如我要看程式碼格式化,就在這輸入“reformat code”,就會跳到具體的設定; 4.你只知道

Javastatic關鍵字解析以及載入順序例題

一.static關鍵字的用途 在《Java程式設計思想》P86頁有這樣一段話:   “static方法就是沒有this的方法。在static方法內部不能呼叫非靜態方法,反過來是可以的。而且可以在沒有建立任何物件的前提下,僅僅通過類本身來呼叫static方法

C#Process.Start獲取main函式返回值,以及控制檯輸出定向到文字框

1、Process.Start()返回啟動程序main函式的返回值   private void button1_Click(object sender, EventArgs e)         {             Process da = new Process

Nginx安裝,默認虛擬主機以及認證和定向

NginxNginx安裝 1.首先下載安裝包 [root@weixing01 src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz --2018-03-14 00:46:57-- http://nginx.org/download/nginx-1.

Android WebView定向無法正常goBack()解決方案

 首先說下問題,初始頁面為A,點選某個連結跳轉到B(http://xxx.com.cn/),B頁面重定向到C頁面(http://xxx.com.cn/website/index.html) 當呼叫webview.goBack()時,頁面回退到B,然後接著會重定向回C頁面.

ubuntu下python跑任務輸出到檔案遇到的一些問題(輸出定向

之前主要是參考https://www.cnblogs.com/chason95/articles/9760291.html 一般使用 python test.py > ./log.txt 或 python test.py | tee ./log.txt 然後就會快取很多輸出後才能在螢幕或log中查到

[Servlet]HttpServletResponse的二進位制輸出(獲取應用程式的資源再輸出)、定向、錯誤傳送

1. 使用getOutputStream輸出二進位制位元組流:     1) 有時相對瀏覽器輸出的直接是一個檔案資源而不是HTML等字串文件,此時就需要使用HttpServletResponse的getOutputStream進行位元組流輸出;     2) 輸出過程:  

ANDROID HTML定向之後返回原生view處理

一直都在做HTML與原生混合式開發,前面遇到一個問題,我們的合作企業,合入我們的APP之後,出現頁面跳轉頁面死迴圈的問題。 1.下面是我們APP裝載HTML後頁面的邏輯||原理 這裡把 合作公司的HTML簡稱[yiju_html], 我們裝載

Django定向頁面時候的小技巧

一個 short href rtc 轉換 edi 修改 ret res urls.py from django.urls import path from . import views app_name=‘front‘ urlpatterns = [ path

android webView 解決定向

最近在開發WebView 過程中碰到了 資源重定向問題;較為頭疼;百度啊;谷歌啊 ; 奈何 ///試了N邊沒有找到合適的; 終於皇天不負有心人  經過一番的艱苦奮戰;我的問題是解決了; 1:這個對於重

關於js"window.location.href"、"location.href"定向

關於js中"window.location.href"、"location.href"、"parent.location.href"、"top.location.href"的用法 "window.location.href"、"location.href"是本頁面跳轉

htmlmeta標籤 refresh 屬性值 -- 重新整理與跳轉(定向)頁面

示例: 5秒之後重新整理本頁面: <metahttp-equiv="refresh" content="5" /> 5秒之後轉到夢之都首頁: <metahttp-equiv="refresh" content="5;url=http://www.dream

UIWebView 載入定向url、新增請求頭資訊

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationTy

Fiddler(3)--定向返回指定資料)

1、使用AutoResponder標籤 2、點選Add Rule按鈕,使用匹配規則   (1)勾選Enable rules:啟用規則   (2)勾選unmatched requestspassthrough:不匹配規則的就按照之前的請求地址傳送過去   (3)選擇規則,在r

Springmvc返回值,ajax,定向

. TestControler: package com.mth.springmvc; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFo

javaEE------------------有關servlet的一些細節(輸出流以及轉發、定向和請求包含)

1.servlet中的兩個輸出流:位元組流(response.getOutputStream()) 和字元流(response.getWriter()) 1)用位元組流輸出時,英文可以out.print("Hello1");中文要採用out.write("中文".getBy

SpringMVC第三篇【收集引數、字串轉日期、結果定向返回JSON】

業務方法收集引數 我們在Struts2中收集web端帶過來的引數是在控制器中定義成員變數,該成員變數的名字與web端帶過來的名稱是要一致的…並且,給出該成員變數的set方法,那麼Struts2的攔截器就會幫我們自動把web端帶過來的引數賦值給我們的成員變數….