android 页面跳转到上个页面后之后再返回,页面没变

1.现象描述,A跳转到B,B页面修改后又跳转到A,在A页面返回,这时出现还是返回到A页面

2.原因分析,A跳转到B后,activity堆栈中还存在A,这时B跳转到A跳转再返回,是返回到activity堆栈顶层,即A页面

3.解决方案,在B界面跳转时清除activity堆栈的顶端

代码如下

 在TApplication定义Activity集合,

List<Activity> activities = new new ArrayList<>();

在A界面添加

TApplication.activities.add(this)

在B界面跳转代码处清除activity

for(Activity activity:TApplication.activities ){
   activity.finish();
}

### 解析 WebView 点击事件失效原因 点击事件在 WebView 中失效通常由多种因素引起。对于 iOS 平台,当遇到 JavaScript 对象操作导致的界面重定向失败时,可能会影响到依赖于这些对象触发的行为,包括点击事件[^1]。 而对于 Android 平台,在设置了自定义 `WebViewClient` 类之后如果交互功能出现问题,则可能是由于未能正确处理 URL 加载请求所造成的。具体来说,如果没有适当地覆盖并实现 `shouldOverrideUrlLoading()` 方法,可能会阻止某些必要的网络请求或本地文件访问,从而影响到页面上的互动行为[^2]。 另外一种常见情况是在配置 Web 设置时不恰当的选择可能导致触摸手势被误识别为缩放动作而不是点击动作。例如,默认情况下允许用户通过双指捏合来调整视图大小的话,这会干扰正常的触控反馈机制[^3]。 最后,在跨平台开发框架如 Uni-app 中构建的应用程序里,若物理返回键的功能受到影响而变得不可用,那么也有可能间接地改变了应用内部的状态管理逻辑,进而波及到了其他类型的输入响应方式[^4]。 ### 实现方案 针对上述提到的各种可能性,以下是具体的修复措施: #### 配置合适的 WebSettings 参数 (Android) 为了确保所有的点击都能正常工作而不受不必要的缩放控制的影响,建议如下设置: ```java WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setBuiltInZoomControls(false); // 关闭内置缩放控制器 settings.setSupportZoom(false); // 不支持任何缩放操作 ``` #### 覆盖 shouldOverrideUrlLoading() 方法 (Android) 确保每次加载新的链接时都给予适当处理,防止因未预期跳转而导致脚本执行环境异常终止。 ```java webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ view.loadUrl(url); return true; } }); ``` #### 修改 HTML/CSS/JS 代码以增强兼容性 有时问题也可能源于网页本身的设计缺陷。可以通过优化前端资源提高不同设备间的适应能力。比如增加 CSS 属性 `-webkit-tap-highlight-color: transparent;` 来消除默认高亮效果;或者利用现代浏览器特性如 touch-action 属性指定特定区域内的手指滑动规则等方法改善用户体验。 #### 更新 App 的状态监听器 (Uni-app) 如果是基于 uni-app 构建的应用遇到了类似难题,可以尝试更新 app 的生命周期函数以及全局样式设定,保证各个模块之间协调一致运作良好。 ```json { "pages": [ { "path": "pages/index/index", "style": { "app-plus": { "titleNView": false, "onBackPress": "function(event){ /* 自定义回退逻辑 */ }" } } } ] } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值