WebView重定向和回退栈的问题,goBack不会回退的问题
原文:http://blog.csdn.net/qq_19729823/article/details/70184623
亲测很有效,原文:
1.问题描述
最近有很多人问我为什么webview加载一个网页,执行了goback网页不能返回的问题,我特此来为那些有问题的或者说有遇到这个问题不知道怎么下手解决的,可以看看下面的解答,或许会对你有所帮助吧。
2.问题原因
webview执行goback为什么不能返回上一页面,而为什么有的网页可以返回上一个页面呢?这到底是什么原因导致的这个问题呢?是因为web页面在被打开的时候是以url1打开,一部分网页是执行了重定向,那么它就会定向到另外一个url2地址上面去,导致你goback返回是返回了,当它从url3返回的时候其实并不是跳转到url2,而是直接返回到url1,而跳转到url1,又因为url1是打开后直接进行重定向的,那么就直接又跳转到url2了,所以会一直循环执行。所以你退不出去。而另外一部分是可以退回上一个页面是因为这些页面没有重定向的操作。所以会直接退回到上一个面。
3.解决方案
既然我们知道了其中的原理,那么看看找找webview有没有什么方法可以解决方案的。
其实,解决这个问题很简单,webview的webViewClient这个玩意,这个玩意就不多说了,大家看看里面的方法就知道干什么的了。这个属性可以监听网页的刚开始打开的网页,和跳转后的网页,这两个方法分别是onPageStarred 和 shouldOverUrlLoading,这两个方法可以解决大家的问题。怎么去用。看看下面的代码
webView.setWebViewClient(new WebViewClient() {
private String startUrl;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingView.show();
startUrl = url;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(startUrl!=null && startUrl.equals(url))
{
view.loadUrl(url);
}
else
{
//交给系统处理
return super.shouldOverrideUrlLoading(view, url);
}
return true;
}
});
通过上面的代码就可以解决大家的问题了。
WebView重定向和回退栈的问题,goBack不会回退的问题相关推荐
- Android WebView重定向问题,Android Webview重定向问题解决方法
项目中需要webview重定向,但是由于一个webveiw里面有许多加载操作,因此在调用webview.goback()方法时,往往达不到我们需要的操作效果. 1.解决方法 WebBackForwar ...
- Android Activity启动模式,回退栈管理!
(一): Activity被回收了怎么办?当系统内存不足的时候Activity是有可能被回收的,打个比方用户在A Activity启动了B Activity那么A就处于停止状态,由于内存不足A会被回收 ...
- Android零基础入门第89节:Fragment回退栈及弹出方法
2019独角兽企业重金招聘Python工程师标准>>> 在上一期分享的文章末尾留了一个课后作业,有去思考如何解决吗?如果已经会了那么恭喜你,如果还不会也没关系,本期一起来学习. 一. ...
- Android笔记 activity生命周期 Tasks and back stack回退栈
正常打开一个应用,先后调用Activity的onCreate.onStart.onResume 正常退出一个应用,先后调用Activity的onPause.onStop.onDestroy(进程被杀死 ...
- Android WebView重定向问题的解决方案
Android WebView重定向问题的解决方案 参考文章: (1)Android WebView重定向问题的解决方案 (2)https://www.cnblogs.com/zimengfang/p ...
- Android之Fragment回退栈详解
前言:本文将结合开发中的实际需求,来讲解一下Fragment中的回退栈 对于Activity,当按返回键时,能够返回到上一个Activity,但是,当我们Fragment到Activity中时,如果不 ...
- Android fragment回退栈
前言 Activity切换时,是通过栈的形式,不断压栈出栈.对于fragment如果你不手动开启回退栈,它是直接销毁再重建,但如果将fragment任务添加到回退栈,情况就会不一样了,它就有了类似Ac ...
- android 清空回退栈,清空Fragment回退栈中某个Fragment
出栈的方法: getActivity().getSupportFragmentManager().popBackStackImmediate(CreateOneFragment.class.getNa ...
- android webview 重定向 goback,Android WebView 网址重定向影响 goBack
我们在使用 Android 自带的控件 WebView 访问某网址的时候, 网址会通过某些方式进行重定向. 这时会出现一个问题. 我们在使用 Android 自带的控件 WebView 访问某网址的时 ...
最新文章
- 竞赛中如何做特征工程
- PostgreSQL 无会话、有会话模式 - 客服平均响应速度(RT)实时计算实践(窗口查询\流计算)...
- linux执行mount命令报错:mount: RPC: Remote system error - Connection refused(NFS:nfs-kernel-server 挂载教程)
- 小猿圈Java学习之通过命令行设置属性值
- Java编程——服务器设计方案之应用限流
- 程序员过关斩将--搞定秒杀,只需要这几步!!
- html改变占位字符的颜色,使用CSS更改HTML5输入的占位符颜色
- docker 搭建 web_《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
- utilities(C++)——枚举
- linux kernel map
- JavaScript学习第八天笔记(Function)
- 20200603每日一句
- 拉普拉斯变换的本质意义
- win10计算机如何禁用签名,win10系统禁用数字签名的设置方案
- 线上故障之-内存问题
- Java面试题(一) 题目:输入某年某月某日,判断这一天是这一年的第几天
- App Store自动下载WiFi与蜂窝数据切换机制
- Gradle依赖本地aar包
- 2021中考成绩查询高考,2021年中考成绩公布时间
- matlab画某个变量的全球分布