解决webview 第二次调用loadUrl页面不刷新的问题
一个需求,当点击Button按钮时,希望加载另一个Url。
以下方法可以成功!
@Override public void onClick(View view) { webview.loadUrl(url); webview.loadUrl( "javascript:window.location.reload( true )" ); }
亲测管用!
补充知识:WebView.loadUrl使用误区
当使用loadUrl加载网页的时候,有时候会出现调用系统浏览器加载网页的现象,网上大部分的解决方案是 :
webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }
这确实可以达到在当前webview加载网页的效果,但是却做了多余的工作,以及不合理的返回值。
实际上,如果你只需要避免启动系统浏览器来加载页面的情况,只需要这么写就可以了
webView.setWebViewClient(new WebViewClient());
完全不需要另外写个类继承WebViewClient,然后在重写它的方法。
当应用场景更复杂的时候,你就能发现网上提供的方法的弊端了:
url存在重定向,无法回退
shouldOverrideUrlLoading(WebView view, String url)
的返回值决定了webview是否自动处理该url,也就是是否加载。当返回true时,由程序处理,当返回false时,webview会自己处理,也就是相当于自动执行了loadUrl方法。
以上这篇解决webview 第二次调用loadUrl页面不刷新的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Android 带进度条的WebView 示例代码
前言 如果不使用系统自带的TitleBar(即Activity被设置@android:style/Theme.NoTitleBar),那就需要自己来写进度条了,这里封装了一个自定义控件和加载网页的公共Activity,方便使用. 正文 一.截图 二.自定义控件 复制代码 /** * 带进度条的WebView * http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html * */ @SuppressWarnings("deprec
-
Flutter实现页面切换后保持原页面状态的3种方法
前言: 在Flutter应用中,导航栏切换页面后默认情况下会丢失原页面状态,即每次进入页面时都会重新初始化状态,如果在initState中打印日志,会发现每次进入时都会输出,显然这样增加了额外的开销,并且带来了不好的用户体验. 在正文之前,先看一些常见的App导航,以喜马拉雅FM为例: 它拥有一个固定的底部导航以及首页的顶部导航,可以看到不管是点击底部导航切换页面还是在首页左右侧滑切换页面,之前的页面状态都是始终维持的,下面就具体介绍下如何在flutter中实现类似喜马拉雅的导航效果 第一步:实
-
解决webview 第二次调用loadUrl页面不刷新的问题
一个需求,当点击Button按钮时,希望加载另一个Url. 以下方法可以成功! @Override public void onClick(View view) { webview.loadUrl(url); webview.loadUrl( "javascript:window.location.reload( true )" ): } 亲测管用! 补充知识:WebView.loadUrl使用误区 当使用loadUrl加载网页的时候,有时候会出现调用系统浏览器加载网页的现象,网上大部
-
Vue Router解决多路由复用同一组件页面不刷新问题(场景分析)
目录 简介 问题复现 代码 测试 解决方案 方案1:导航守卫 方案2:watch监听$route 方案3:父组件router-view指定key 其他网址 简介 说明 本文介绍如何解决Vue的多路由复用同一组件页面不刷新问题. 多路由复用同一组件的场景 多路由使用同一组件 比如:添加博客(path为:/addBlog)和编辑博客(path为:/editBlog)都对应同一个组件(EditBlog.vue) 动态路由 比如:用户详情页采用动态路由,其path为:/user/:id,组件都是User
-
Android Webview的postUrl与loadUrl加载页面实例
关于Android的webview,用过的想必都不会陌生.这里我就不说webview的基本用法了,想要知道的可以去网上百多,有很多介绍webview基本用法的. 本文要介绍的主要是在项目过程中使用webview的postUrl遇到的坑. 1.使用场景如下: webview在加载H5链接时,默认是使用loadUrl进行加载,如果你设置了缓存属性(进行缓存),在显示的H5页面内点击跳转到另外一个页面后,按回退键,可以正常的返回到上一个页面,因为进行了缓存设置.但是如果使用postUrl进行加载,即使
-
Android 解决WebView调用loadData()方法显示乱码的问题
Android 解决WebView调用loadData()方法显示乱码的问题 第一步: mWebView.getSettings().setDefaultTextEncodingName("UTF-8"); 第二步: mWebView.loadData(data, "text/html; charset=UTF-8", null); WebView常用配置: private void initWebView() { mWebView.getSettings().se
-
解决webview调用goBack()返回上一页自动刷新闪白的情况
问题是:重写了onKeyDown()方法使其goBack(),但是遇到的问题是,每次进入webview再次返回原始页面的时候,中间会有一个闪白的出现. 试了好多网上的方法,发现都是扯淡. 后来意识到,webView 有缓存存在着缓存模式,怎么用不同的缓存模式呢? //设置缓存模式 webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 需要把模式改成LOAD_NO_CACHE!! 但是每次都得重新请求很费资源,于是可以放在onK
-
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
需求: 项目中需要开发一个导航栏,类似浏览器的导航,没有关闭的时候页面缓存,关掉之后,页面随之销毁.(如图) 项目是使用Vue + Vue-Router + Vuex 刚开始使用的方法是:关闭导航标签,直接调用对应的页面的$destory()方法,OK,可以实现关闭页面(下次再打开该页面,将初始化)的功能,但是遇到个问题: 该页面将不再被缓存,也就是说切换导航tab时,页面将不断的被初始化!!! 查了一下文档,找了度娘,没发现解决方法,又去请教G哥,这才发现原来Vue keep-alive真的有
-
Android Naive与WebView的互相调用详解
Android Naive与WebView的互相调用详解 Android的Naive程序是可以嵌套WebView,并且可以做到与WebView的交互,一般来说有两种方法,一是直接交互,比如,Naive直接调用WebView的方法和WebView直接调用Naive的方法.二是WebView可以写<a/>超链接标签,然后用户点击此标签时,Naive可以拦截到点击标签的事件,这样,我们可以在链接上做一套自己的协议,然后Android和iOS可以根据此协议做出相同的处理,做到多平台统一. 我们先研究
-
解决WebView通过URL加载H5界面出现空白的问题
1.权限问题:在配置文件中需要设置网络权限 <uses-permission android:name="android.permission.INTERNET" /> 2.基本配置问题 WebSettings webSettings = webView.getSettings(); //支持缩放,默认为true. .setUseWideViewPort(true); // 缩放至屏幕的大小 webSettings .setLoadWithOverviewMode(true
-
Android Naive与WebView的互相调用详解
Android Naive与WebView的互相调用详解 Android的Naive程序是可以嵌套WebView,并且可以做到与WebView的交互,一般来说有两种方法,一是直接交互,比如,Naive直接调用WebView的方法和WebView直接调用Naive的方法.二是WebView可以写<a/>超链接标签,然后用户点击此标签时,Naive可以拦截到点击标签的事件,这样,我们可以在链接上做一套自己的协议,然后Android和iOS可以根据此协议做出相同的处理,做到多平台统一. 我们先研究
-
VBScript教程 第二课在HTML页面中添加VBscript代码
VB教程 > 第二课在HTML页面中添加VBscript代码 SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中. <SCRIPT> 标记 VBScript 代码写在成对的 <SCRIPT> 标记之间.例如,以下代码为一个测试传递日期的过程: <SCRIPT LANGUAGE="VBScript"> <!--Function CanDeliver(Dt)CanDeliver = (CDate(Dt) - Now())
随机推荐
- P3P 和 跨域 (cross-domain) cookie 访问(读取和设置)
- MongoDB数据库的特色和优点介绍
- 使用jQuery实现两个div中按钮互换位置的实例代码
- VBS教程:属性-Attributes 属性
- URL重写及干掉ASP.NET试图状态的实现方法
- apache中为php 设置虚拟目录
- PHP迭代与递归实现无限级分类
- Android中Fragment相互切换间不被回收的实现方法
- PHP中soap的用法实例
- 在Python的Flask框架下收发电子邮件的教程
- python正常时间和unix时间戳相互转换的方法
- jquery取消事件冒泡的三种方法(推荐)
- 内网渗透-----如何打开突破口
- JavaScript forEach()遍历函数使用及介绍
- Win2003下安装PHP5.2.0+MySql5.0.27+PHPMyAdmin2.9.1的配置方法
- Android通过Path实现搜索按钮和时钟复杂效果
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- C++二分查找算法实例
- 详解Android中点击事件的几种实现方式
- Android中通过样式来去除app的头及界面全屏(备忘)的实现方法