【Android您问我讲】如何使用选显卡 - Tabhost的使用

深入解析GitHub Actions中的actions/checkout:原理、参数与排错指南 在持续集成与持续交付(CI/CD)流程中,自动化工作流往往需要首先获取源代码。GitHub Actions作为主流的自动化平台,其内置的actions/checkout便是承担这一职责的关键动作。它负责将仓库代码拉取到运行环境中,为后续的依赖安装、测试与构建奠定基础。许多开发者容易将它与Git命令git checkout混淆,实则前者是工作流中的步骤,后者是仓库内部分支切换命令。理解二者区别、掌握fetch-depth、ref、token等核心参数,能帮助开发者避免常见的检出失败、历史记录缺失或权限问题。本 阅读详情

1. 范例说明

  • TabHost是Android系统中提供的一个视图容器组件,它可以通过分页显示一组子组件,把程序中的多个Activity组织起来。创建一个TabHost还需要引入TabWidget组件和TabHost.TabSpec组件,TabWidget代表选项卡的位置,Tabhost.Spec则表示每个选项卡中的内容。
  • 在本范例的布局文件中,TabWidget的ID必需设置为”@android:id/tabs”,FrameLayout的ID必需设置为”@android:id/tabcontent”。另外,如果MainActivity不是继承于TabActivity,那么在代码中,通过findViewById()方法找到TabHost后,应该先执行一次setup()方法以完成TabHost的加载;如果MainActivity是继承于TabActivity,那么TabHost的ID就必需设置为”@android:id/tabhost”

2. 运行结果


3. 核心代码

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		Resources res = getResources();
		
		TabHost host = (TabHost)findViewById(R.id.tabhost);
		host.setup();
		
		TabSpec spec;
		spec = host.newTabSpec(res.getString(R.string.tab_01))
				.setIndicator(res.getString(R.string.tab_01),res.getDrawable(android.R.drawable.star_big_on))
				.setContent(R.id.txt1);
		
		host.addTab(spec);
		
		spec = host.newTabSpec(res.getString(R.string.tab_02))
				.setIndicator(res.getString(R.string.tab_02),res.getDrawable(android.R.drawable.arrow_up_float))
				.setContent(R.id.txt2);
		
		host.addTab(spec);
		
		spec = host.newTabSpec(res.getString(R.string.tab_03))
				.setIndicator(res.getString(R.string.tab_03),res.getDrawable(android.R.drawable.star_big_on))
				.setContent(R.id.txt3);
		
		host.addTab(spec);
				
		host.setCurrentTab(1);
		host.setOnTabChangedListener(new OnTabChangeListener() {
			
			@Override
			public void onTabChanged(String tabId) {
				Toast.makeText(MainActivity.this, tabId, Toast.LENGTH_SHORT).show();
			}
		});
		
		
	}


5. 视频讲解

http://www.eyeandroid.com/thread-11497-1-1.html

测试场景驱动的CI选型:Jenkins vs GitLab CI vs GitHub Actions实战对比 持续集成(CI)是现代软件工程中提升交付效率的核心实践,但选型不能只看功能列表,而应回归测试场景本身。Jenkins基于有状态Agent架构,适合重工具链和复杂环境的持久化测试;GitLab CI采用临时Runner和容器编排,在集成测试中表现突出;GitHub Actions以云原生事件驱动模式,依托矩阵并行和官方生态,最适合轻量级单元测试与UI自动化分片。理解三者的设计原理,才能根据执行频率、环境依赖、资源消耗等维度做出合理决策。从单元测试的缓存策略,到集成测试的数据库服务编排,再到大规模并发测试的成本 阅读详情

相关推荐

JDK 11+ 缺失 JavaFx 的解决方案:从诊断到部署的完整指南

Java 模块化系统是 JDK 9 引入的核心架构革新,它通过将平台拆分为独立的模块,实现了更精细的依赖管理和更小的运行时体积。这一原理使得 JDK 能够剥离非核心组件,从而催生了 JavaFx 从标准 JDK 中的分离。其技术价值在于提升了 JDK 的灵活性与可维护性,允许像 JavaFx 这样的 GUI 工具包独立、快速地迭代。在桌面应用开发这一典型应用场景中,开发者常会遇到因 JDK 版本升级或使用了不包含 JavaFx 的发行版而导致的“程序包 javafx.xxx 不存在”错误。本文聚焦于解决这一

weixin_34221773的博客 396

ego-lite:共享 Chrome 登录态给 AI Agent,多任务并行不打扰你

ego-lite 是一款免费的 AI Agent 浏览器:把你 Chrome 里的登录状态、Cookie 和书签共享给 Claude Code、Codex 这类助手,Agent 在浏览器内隔离的 Space 里跑网页自动化任务,你的标签页和鼠标全程纹丝不动,零成本零配置。 [![ego-lite:AI Agent 浏览器,共享登录态、多 Space 并行自动化](https://raw.gitc

gitblog_00491的博客 170

数据科学家必备:Makefile与GitHub Actions自动化工作流

在数据科学实践中,自动化工作流是连接原始数据与业务洞察的关键桥梁。其核心原理在于基于文件依赖的声明式任务编排(Makefile)与事件驱动的云端执行(GitHub Actions),二者协同构建可复现、可验证、可协作的CI/CD pipeline。该技术组合显著提升数据报告生成、模型迭代和团队协同效率,广泛应用于MLOps、分析型项目及研究复现等场景。本文聚焦真实工程落地,详解如何用Makefile定义数据处理契约、通过GitHub Actions实现一键触发的端到端自动化,并确保本地开发与云端执行行为一致

444

GitHub Actions checkout Action 全解析:参数、踩坑与最佳实践

在 CI/CD 流水线中,代码检出往往是所有构建任务的第一步,而 GitHub Actions 中的 checkout Action 正是承担这一职责的官方组件。它并非简单执行 git clone,而是通过参数控制 Git 操作行为,为后续构建准备正确的代码版本与认证信息。理解其核心原理,能帮助开发者真正掌握浅克隆、子模块递归拉取、稀疏检出等高级用法,从而有效降低仓库下载耗时、磁盘占用和安全风险。无论是处理 monorepo 的多目录构建、基于矩阵策略的多分支并行任务,还是通过 API 批量触发 workf

weixin_34252090的博客 355

DagsHub+GitHub Actions+CML构建轻量级ML自动化工作流

机器学习自动化工作流(ML Automation Workflow)本质是数据、代码、模型与指标四要素的协同版本控制与可重复执行。其核心原理在于通过声明式流水线实现变更驱动的端到端验证,技术价值体现在消除人工干预、保障实验可复现、支撑合规审计。典型应用场景包括电商点击率迭代、金融风控模型更新及工业视觉模型持续交付。DagsHub提供面向MLOps的元数据治理与实验对比能力,GitHub Actions负责事件触发与CI集成,CML则解决GPU算力的确定性调度问题——三者组合构成无需K8s的轻量级MLOps闭

abo1977的博客 456

GitHub Actions驱动的Java生产级CI/CD流水线:Maven编译、测试与SSH部署

CI/CD是现代软件交付的核心实践,其本质是通过自动化实现代码从提交到运行的确定性流转。在Java技术栈中,Maven作为事实标准的构建工具,天然承担着依赖管理、编译、测试与打包等关键生命周期职责。基于GitHub Actions构建CI/CD流水线,无需Docker或K8s等额外基础设施,仅依赖SSH与Java环境即可完成端到端部署,显著降低运维复杂度与学习成本。该方案强调可追溯性(Git Tag驱动发布)、原子性(软链接+systemd服务控制)与环境一致性(复用本地Maven配置),适用于Spring

weixin_30697239的博客 305

GitHub Actions与Pages服务降级:排查流程与韧性发布实践

持续集成与持续部署(CI/CD)是现代软件工程的核心环节,GitHub Actions作为主流的自动化执行引擎,与GitHub Pages一起构成了许多团队从代码提交到站点发布的完整链路。当平台出现降级(degraded availability)状态时,工作流长时间排队、Pages返回502或504等异常会严重影响交付节奏。面对这类问题,首先需要理解GitHub状态页的术语含义,掌握区分平台故障与本地配置错误的判断方法。通过GitHub CLI和API,开发者可以快速获取任务状态、构建记录等客观信息,从而

weixin_33858336的博客 335

基于GitHub Actions的RWKV模型自动化测试流水线构建指南

持续集成(CI)是现代软件工程保障代码质量的核心实践,通过自动化构建、测试和部署流程,确保每次代码变更的稳定性和可靠性。在机器学习运维(MLOps)领域,这一理念尤为重要,因为模型更新常伴随环境依赖、接口变更等风险。GitHub Actions作为与代码仓库深度集成的CI/CD平台,提供了开箱即用的计算环境和丰富的社区生态,能够高效实现自动化测试流水线。其技术价值在于将重复性的人工验证转化为可重复、可追溯的自动化流程,显著提升开发效率和项目质量。应用场景广泛覆盖开源模型仓库的版本发布验证、Pull Requ

weixin_33968104的博客 397

GitHub Actions中EdgeDriver签名指纹不匹配的根治方案

在CI/CD自动化流程中,浏览器驱动程序的稳定性是保障测试与部署流水线顺畅运行的基础。数字签名机制作为软件安全的核心原理,通过哈希算法验证文件完整性与发布者身份,确保驱动未被篡改。这一机制在自动化测试中尤为重要,能防止恶意代码注入,保障测试环境安全。然而,在GitHub Actions等云端CI环境中,由于网络波动、缓存不一致或版本管理工具的自动更新行为,可能导致EdgeDriver的二进制文件在下载或处理过程中发生微小变化,从而触发“签名指纹不匹配”错误,致使Selenium自动化测试流程中断。本文聚焦于

weixin_34214500的博客 393

Unity IL2CPP打包错误排查与性能优化全攻略

在Unity移动开发中,脚本后端的选择直接影响应用性能与代码安全。IL2CPP作为将C#中间语言转换为C++代码的编译技术,通过AOT(预先编译)机制显著提升运行效率,尤其适用于iOS/Android平台的高性能需求场景。其技术原理在于将托管代码静态编译为原生机器码,避免了JIT编译的开销,同时增强代码混淆保护。然而,这一优势也带来了构建环境的复杂性,常见的“IL2CPP not installed”错误往往源于环境配置缺失或路径设置问题。实际开发中,开发者需系统掌握编辑器模块安装、NDK工具链配置及项目构

weixin_30235225的博客 407

Windows下Python tkinter缺失问题全解析与解决方案

在Python GUI开发中,标准库tkinter是构建图形界面的核心工具包。其工作原理基于Tcl/Tk图形库,为Python提供了跨平台的本地窗口组件支持。掌握tkinter对于开发桌面应用、数据可视化工具及教学演示程序具有重要技术价值,尤其在数据分析、自动化脚本等领域应用广泛。然而在Windows环境下,常因安装配置不当导致ModuleNotFoundError,影响开发效率。本文聚焦Python环境配置与依赖管理,深入剖析tkinter缺失的根源,涵盖官方安装器选项、Anaconda环境管理及虚拟环境

weixin_30915275的博客 394

Winhance:免费 Windows 10/11 系统优化与精简工具完整指南

Winhance 是一款开源的 Windows 系统优化工具,帮你完成去预装软件(debloat)、性能调优和界面定制三类工作。它适合刚装好系统的新用户,也适合想把系统"收拾干净"的老用户。你不需要改注册表、写 PowerShell 脚本,所有操作都在图形界面里用开关和列表完成。整个过程可搜索、可回溯,重要操作前还能创建系统还原点。 ## 项目概览 Winhance 是一个用 C# 编写的 W

gitblog_00541的博客 174

MaixCAM2 4K AI相机硬件解析与开发实战

嵌入式AI视觉开发中,边缘计算设备的选择直接影响项目落地效果。以NPU为核心的AI加速技术通过专用指令集优化,可在低功耗下实现10+TOPS算力,典型应用包括工业质检、智能门禁等实时场景。MaixCAM2作为新一代4K AI相机,搭载AX630 SoC芯片,其双核Cortex-A53与NPU的异构架构,在运行YOLOv11n模型时可达113FPS,显著优于传统方案。开发时需注意模型量化部署技巧,如INT8量化需500+张校准图片覆盖多光照条件,避免准确率下降。设备扩展性方面,PMOD接口支持热成像、ToF传

weixin_30819085的博客 691

Ubuntu 18.04跑不动新版GitHub Actions Runner?用Docker容器化优雅解决GLIBC依赖问题

持续集成(CI)流水线的稳定运行高度依赖运行环境的一致性,而操作系统底层动态链接库的版本差异常常成为部署的隐形瓶颈。glibc作为Linux系统最核心的C运行时库,其符号版本直接决定了二进制程序能否被加载执行。当较新的应用组件(如GitHub Actions Runner)依赖更高版本的glibc时,旧版系统(如Ubuntu 18.04)就会因缺少相应符号而报错。容器化技术通过将应用与宿主系统库隔离,为这类兼容性问题提供了优雅的工程解法。在Docker容器中运行基于新版Ubuntu的Runner,既保留了宿

weixin_30843121的博客 111

STM32F407+LAN8720A+LwIP实战:FreeModbus TCP从机功能开发指南

本文详细介绍了基于STM32F407和LAN8720A硬件平台,结合LwIP协议栈实现FreeModbus TCP从机功能的开发指南。内容涵盖硬件连接、LwIP移植、FreeModbus TCP从机实现、任务调度及调试技巧,为工业控制领域的以太网通信开发提供实用参考。

weixin_29190651的博客 547

破译丰田BEAN总线之谜

我对CAN的深入了解并不是从CAN本身开始的,而是起源于丰田公司自主研发的BEAN总线。由于BEAN总线协议并不是公开的,而是一种技术机密,所以当丰田车不在使用BEAN总线两年多后的今天,虽然这里还不敢公开技术细节,但回想起当年的作品,随便写写也算对自己的努力有所交代。   南方都市报惠州版曾经报道过一则新闻,说的是丰田皇冠车被盗率非常高。其实两年前就已经知道了皇冠车的防盗系数很低,所以当时的首

粤嵌 5266

GitHub Actions + DigitalOcean App Platform 构建稳定 CI/CD 流水线

CI/CD 是现代云原生应用交付的核心实践,其本质是通过自动化实现代码变更到生产环境的可预测、可追溯、可重复交付。其原理在于将构建、测试、部署等环节解耦并标准化,依托事件驱动(如 git push)触发流水线执行,从而消除人工操作带来的不确定性。技术价值体现在显著降低线上事故率、提升发布频率与团队协作效率,并加速新人上手。典型应用场景包括托管平台(如 DigitalOcean App Platform)上的 Web 服务持续交付,尤其适配 GitHub Actions 与 doctl CLI 协同模式——前

weixin_34082695的博客 500

ISO7816协议深度解析-简单易懂协议详解(一)-- 复位,字符帧,及ATR

1. 摘要 IC卡必须支持T=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0和T=1的协议。 • T=0通讯协议是异步半双工字符传输协议; • T=1通讯协议是异步半双工块传输协议; 在ISO7816-3标准中,具体规定了这两种协议:T0和T1。 IC卡所用的协议在TD1中指定,如果在复位应答信息中没有TD1,则表示用T=0的协议进行通讯。在复位应答后,IC卡和终端之间即用IC卡指定的协议进行通讯。 2. 硬件接口 1)VCC:电源输入(A类:5V, B类:3V) 2)GND:地 3

代码打工人的博客 4万+

Python环境变量实战:从os.environ到Docker安全配置全链路

环境变量是操作系统为进程提供的键值对集合,作为程序运行时的外部配置机制,其本质是进程启动时继承的操作系统级上下文。它遵循‘代码与配置分离’原则,支撑开发、测试、生产多环境隔离,并在微服务与容器化架构中承担密钥注入、动态配置等关键角色。相比硬编码config.py,环境变量具备权限隔离强、不入版本库、可被容器编排工具原生支持等工程优势。本文聚焦Python生态中os.environ的实际使用、.env文件加载时机、Docker环境变量注入优先级、多线程安全边界及CI/CD中secrets安全传递等真实场景问题

weixin_30402343的博客 395

基于 Arduino 的鱼缸水质检测控制系统设计

本系统通过多传感器实时采集鱼缸水质参数(pH 值、温度、溶解氧、浊度),经 Arduino 主控芯片处理后,驱动执行模块自动调节水质,并通过显示模块实时展示数据。系统具备阈值报警、自动换水、温度调节、增氧等功能,适用于家庭或小型水族箱的水质智能管理。本设计提供了低成本、易扩展的鱼缸水质管理方案,适用于家庭水族箱或小型水产养殖场景,可根据实际需求调整传感器类型和控制逻辑。注:本设计如有疑问需要解惑可直接私信本人,看我个人简介。

weixin_42300449的博客 1087

【Android性能优化】Android App 冻结与内存压缩:CachedAppOptimizer 源码级解析

本文基于 AOSP Android 16 源码,以 `CachedAppOptimizer` 为核心,深度解析 Android 对"后台缓存应用"的两大治理手段——**进程冻结(Freezer)**与**内存压缩(Compaction)**。文中完整还原冻结的 debounce 去抖动机制、`mEarliestFreezableTime` 的最早可冻结时刻算法、粘性冻结(Sticky Freeze)的语义,以及解冻时必须"先解 binder 再解进程"的顺序奥义。

weixin_44081096的博客 195

OpCore-Simplify 黑苹果 EFI 生成实战:6 步从硬件报告到可启动 EFI

OpCore-Simplify 是一个把黑苹果 EFI 生成全流程自动化的命令行工具:你只需导入一份硬件报告,它替你算兼容性、挑 macOS 版本、生成 ACPI 补丁、筛选 kext,最后产出一个能直接用的 EFI 文件夹。适合想装黑苹果、又不想逐行手写 config.plist 的用户。主菜单只有 6 个选项——选报告、选系统、3/4/5 分别微调 ACPI、kext、SMBIOS、6 是构建

gitblog_00481的博客 413

结构光之相移法+多频外差的数学原理推导

‍论文:基于数字光栅投影的结构光三维测量技术与系统研究 [博]作者:李中伟 华中科技大学 2007功能:相移法:多频外差(三频N步相移法)01 相移法图1 待写入投影仪的理想N步相移条纹通常对于 步相移来说,生成第 幅条纹图像(如图1所示)的公式如下:402 Payment Required其中::背景光强:调制强度:像素点横向坐标:相移值图2 相机拍摄到的实际 N ......

3D视觉工坊 1190

GetQzonehistory 免密快速备份 QQ 空间历史说说:一条命令一次扫码,直接得到 6 张表格和一个网页

你的 QQ 空间说说散在多年前的毕业旅行和深夜吐槽里,官方没有导出入口,历史消息一旦超过平台保留上限就再也补不回来,手动截图存档至少要耗掉半天。GetQzonehistory 是一个纯本地、免密码的 QQ 空间历史说说备份工具:一条命令、一次扫码,把说说、评论和配图完整搬回本地硬盘。 ## 动手前,克隆 GetQzonehistory 并一次备齐环境 开始前有两项环境要求:装好 Python

gitblog_00216的博客 469

anaconda navigator 卡在loading application界面一直没有反应解决办法

在打开anaconda navigator 程序的时候,遇到了2个问题。第一个问题:打开的时候弹出提示:There is an instance of Anaconda Navigator already running.第二个问题:程序一直卡在loading application界面一直没有反应。以下是我的解决办法,有效果。

猿小白的博客 4386

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

AI编程助手落地实践:Jira+Slack+GitHub Actions工程化集成

AI编程助手正从代码生成工具演进为团队级协作节点,其核心价值不在于替代开发者,而在于嵌入现有工程流程——通过Jira定义需求边界、Slack实现轻量状态同步、GitHub Actions enforce质量门禁。这种集成本质是构建可验证、可追溯、可干预的人机协作闭环,依赖清晰的责任划分(如AI负责技术实现,人把控流程决策)与分层质量保障(Jest单元测试守逻辑契约,Playwright端到端测试验真实体验)。本文聚焦Devin在真实前端+Node.js项目中的Jira集成、Slack通知配置、双轨测试策略及

xpp02的专栏 392

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: [Android Training视频系列]6.1 Saving Key-Value Sets
下一篇: 【Android您问我讲】带左右滑动的选项卡 - ViewPager与Tabhost的结合使用
cofftech
博客等级 码龄16年 46粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值