Android实现返回键操作思路
发布时间 - 2026-01-10 22:59:44 点击率:次记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList

捕获用户的返回键操作,响应返回键,返回上一个界面
MainActivity.java
/**
* 返回键处理
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
boolean result=MiddleManager.getInstance().goBack();
if(!result){
Toast.makeText(MainActivity.this, "是否退出应用", 1).show();
}
return false;
}
return super.onKeyDown(keyCode, event);
}
MiddleManager.java
//操作历史栈
private LinkedList<String> HISTORY=new LinkedList<String>();
/**
* 处理返回键
* @return
*/
public boolean goBack() {
//如果为空会抛异常
if(HISTORY.size()>0){
if(HISTORY.size()==1){
return false;
}
HISTORY.removeFirst();
if(HISTORY.size()>0){
String key=HISTORY.getFirst();
BaseView targetView=VIEWCACHE.get(key);
mainContainer.removeAllViews();
View child=targetView.getView();
mainContainer.addView(child);
child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));
currentView=targetView;
return true;
}
}
return false;
}
/**
* 加载界面
*/
public void loadView(Class<? extends BaseView> baseViewClass) {
BaseView baseView=null;
//判断是否存在
String key=baseViewClass.getSimpleName();
if(VIEWCACHE.containsKey(key)){
baseView=VIEWCACHE.get(key);
}else{
try {
Constructor<? extends BaseView> constructor;
constructor = baseViewClass.getConstructor(Context.class);
baseView=constructor.newInstance(mainContainer.getContext());
} catch (Exception e) {
e.printStackTrace();
}
VIEWCACHE.put(key, baseView);
}
mainContainer.removeAllViews();
View child=baseView.getView();
mainContainer.addView(child);
child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));
currentView=baseView;
//放入栈
HISTORY.addFirst(key);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 返回键
# android中LinearLayoutManager一键返回顶部示例
# Android实现点击两次返回键退出
# 在Unity中捕捉Android的常用按钮返回事件
# Android实现返回键功能
# Android点击按钮返回顶部实现代码
# 数据结构
# 大家多多
# 为空
# 判断是否
# 加载
# return
# false
# makeText
# show
# Toast
# goBack
# private
# super
# size
# HISTORY
# key
# removeFirst
# lt
# getFirst
# gt
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
如何在香港免费服务器上快速搭建网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Python自动化办公教程_ExcelWordPDF批量处理案例
太平洋网站制作公司,网络用语太平洋是什么意思?
昵图网官方站入口 昵图网素材图库官网入口
php 三元运算符实例详细介绍
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
javascript中的try catch异常捕获机制用法分析
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
jQuery 常见小例汇总
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
nginx修改上传文件大小限制的方法
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel如何使用withoutEvents方法临时禁用模型事件
如何快速生成ASP一键建站模板并优化安全性?
油猴 教程,油猴搜脚本为什么会网页无法显示?
网站制作壁纸教程视频,电脑壁纸网站?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Python结构化数据采集_字段抽取解析【教程】
如何用5美元大硬盘VPS安全高效搭建个人网站?
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel如何优化应用性能?(缓存和优化命令)
C语言设计一个闪闪的圣诞树
教你用AI将一段旋律扩展成一首完整的曲子
Laravel Session怎么存储_Laravel Session驱动配置详解
如何在阿里云虚拟服务器快速搭建网站?
如何彻底删除建站之星生成的Banner?
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel如何处理CORS跨域请求?(配置示例)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何基于PHP生成高效IDC网络公司建站源码?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何在橙子建站中快速调整背景颜色?
Laravel如何实现模型的全局作用域?(Global Scope示例)
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何快速搭建支持数据库操作的智能建站平台?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
JS经典正则表达式笔试题汇总
Android实现代码画虚线边框背景效果
Laravel如何使用Blade组件和插槽?(Component代码示例)

