Android开发从0开始(Activity篇)

news2025/1/22 14:44:02

Activity的生命周期

对应解释:

startActivity(new Intent(源页面.this,目标页面.class))    结束当前活动页面finish();

Activity的启动模式

  App先后打开两个活动,此时活动会放入栈内。

(Android:launchMode=standard)默认

(Android:launchMode=singleTop)栈顶复用(渠道多)

(Android:launchMode=singleTask)栈内复用(主界面)

(Android:launchMode=singleInstance)全局唯一模式。

动态设置模式

Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)设置启动标识,几十存在待跳转活动实例,清除上方所有实例,重新创建实例,保证栈中只有该活动的唯一实例。

Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)清空活动栈的所有实例。所以也要同时启动新任务栈   (Intent.FLAG_ACTIVITY_NEW_TASK)。场景例如登录页面。获取验证。

Intent各个组件之间数据传输

显示Intent:

①在Intent的构造函数中指定。

Intent intent= new Intent(FristActivity.this,second_layout.class);//创建指定目标明确的意图

②调用意图对象的setClass方法。

Intent intent =new Intent( ); //创建一个意图

Intent.setClass (this, ActNextActivity.class);//set设置意图跳转

③调用意图对象的setComponent方法。

Intent intent =new Intent( ); //创建一个意图

//创建包含目标活动在内的意图组件对象(可传类名,包名)

ComponentName componet = new ComponentName(this,ActNextActivity.class);

Intent.setCompent(component); //设置意图携带组件信息

隐士Intent:(没指定要跳转的活动目标,只给出一个动作字符串,系统自动匹配)

可通过setAction方法指定,或者构造函数Intent(STring action)常见系统动作。

示例:

Intent intent= new Intent();

//设置动作意图为准备拨号

intent.setAction(Intent.ACTION_DIAL);    

Uri uri= Uri.parse("tel"+phone);

intent.setData(uri);

startActivity(intent);

 其他隐intent使用:

向Activity发送数据:

向下一个activity传输数据

 Intent使用Bundle对象存放传递的数据信息。 Bundle对象读getExtras,写putExtras。

发                                        Bundle:是map数据结构     

 Intent intent = new Intent(this,Receiveactivity.class);

        Bundle bundle= new Bundle();

        bundle.putString("request_content",tv_send.getText().toString());

        intent.putExtras(bundle);

        startActivity(intent);

        setContentView(R.layout.activity_receiveactivity);

        tv_receive= findViewById(R.id.tv_receive);

        //从上面一个页面传来意图中获取快递包裹

        Bundle bundle= getIntent().getExtras();

        String request_content=bundle.getString("request_content");

        String desc= String.format("收到请求内容: %s",request_content);

        tv_receive.setText(desc);

向上一个activity返回数据

 下一个页面打包应答数据调用setResult方法返回数据包,上一个页面重写onActivityResult解析返回数据。

为activity补充附加信息

  ①利用资源文件配置字符串

    //从string.xml中获取名叫weather_str的值

    String value= getString(R.string.weather_str);

    tv_resource.setText(value);

②利用元数据传递配置信息

在AndroidManifest.xml中<meta-data android:name="weather" android:value="晴天"/>。

(适合在第三方SDk,时候整合别人的源数据时候在全局配置里使用)

方法:调用getPackageManager方法获得当前活动的信息对象

调用包管理器的getActivityInfo方法获得当前活动下信息对象

  活动信息对象的metaData是Bundle包裹类型,调用包裹对象的getString获得参数            ActivityInfo info = pm.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);

Bundle bundle = info.metaData;   //获取活动附加的元数据

  String weather =bundle.getString("weather");  //从bundle中获取.weather属性

③给页面注册快捷方式(长按app触发功能)

<?xml version="1.0" encoding="utf-8"?>

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">

  <shortcut

      android:shortcutId="first"

      android:enable="true"

      android:icon="@mipmap/ic_launcher"

      android:shortcutShortLabel="first"

      android:shortcutLongLable="启停活动">

      <intent

          android:action="android.intent.action.VIEW"

          android:targetClass="android.app.Activity"

          android:targetPackage="com.example.test_application"

          />

      <categories android:name="android.shortcut.conversation"/>

  </shortcut>

</shortcuts>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1246026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea git将某个分支内的commit合并到其他分支

idea git将某个分支内的commit合并到其他分支 1.打开旧分支的代码提交记录 在IDEA中切换到新分支的代码&#xff0c;点击Git打开代码管理面板&#xff0c;在顶部点击Log:标签页&#xff08;这个标签页内将来可以选择不同分支的个人/所有人的代码commit记录&#xff09;&#x…

自监督LIGHTLY SSL教程

Lightly SSL 是一个用于自监督学习的计算机视觉框架。 github链接&#xff1a;GitHub - lightly-ai/lightly: A python library for self-supervised learning on images. Documentation&#xff1a;Documentation — lightly 1.4.20 documentation 以下内容主要来自Documen…

平台工程时代的 Kubernetes 揭秘:2023年生产状况报告深度剖析

Kubernetes 在生产环境中的复杂性已经成为常态&#xff0c;在2023年这个平台工程盛行的时代&#xff0c;容器管理的最大亮点可能在于其灵活性&#xff0c;然而在运维政策和治理等方面仍然存在诸多挑战。八年过去了&#xff0c;在生产环境中使用 Kubernetes 仍然需要面临许多挑战…

Java 项目中常用注解汇总!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post请求 映射到接口 RequestBody 用来接收HTTP请求体中参数 GetMapping("/getDetails") get请求 映射到接口 RequestParam 用来接收URL中的查询参数 PutMappi…

YaRN方法:无需微调,高效扩展语言模型上下文窗口/蚂蚁集团与浙大发布原生安全框架v1.0,引领企业网络安全新时代 |魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件&#x1f525;&#xff0c;更新AIGC的最新动态&#xff0c;生成相应的魔法简报&#xff0c;节省阅读时间&#x1f47b; &#x1f525;资讯预览 YaRN方法&#xff1a;无需微调&#xff0c;高效扩展语言模型上下文窗口 蚂蚁…

将form表单中的省市区的3个el-select下拉框的样式调成统一的间隔距离和长度,vue3项目iot->供应商管理

省市区是用3个el-select组成的 在表单中用el-col&#xff0c;会导致3个下拉的距离不统一&#xff0c;市和区的前面也是不需要文字label的 如何解决:用vue3的:deep()进行样式穿透&#xff0c;由于el-form-item标签都是一样的&#xff0c;为了能准确的找到市的el-form-item&…

什么是机器学习

前言 机器学习&#xff08;Machine Learning, ML&#xff09;是一个总称&#xff0c;用于解决由各位程序员自己基于 if-else 等规则开发算法而导致成本过高的问题&#xff0c;想要通过帮助机器 「发现」 它们 「自己」 解决问题的算法来解决 &#xff0c;而不需要程序员将所有…

Python MD5加密的三种方法(可加盐)

方法一&#xff1a;MD5直接加密 import hashlibtext1123456 print(text1) mdhashlib.md5(text1.encode()) # 创建md5对象 md5pwdmd.hexdigest() # md5加密 print(md5pwd) 输出结果&#xff1a; 方法二&#xff1a;MD5盐加密&#xff0c;将盐拼接在原密码后 import ha…

Vatee万腾科技的独特力量:Vatee数字时代创新的新视野

在数字化时代的浪潮中&#xff0c;Vatee万腾科技以其独特而强大的创新力量&#xff0c;为整个行业描绘了一幅崭新的视野。这不仅是一场科技创新的冒险&#xff0c;更是对未来数字时代发展方向的领先探索。 Vatee万腾将创新视为数字时代发展的引擎&#xff0c;成为推动行业向前的…

TCP 重传、滑动窗口、流量控制、拥塞控制的剖析

TCP 是一个可靠传输的协议&#xff0c;那它是如何保证可靠的呢&#xff1f; 为了实现可靠性传输&#xff0c;需要考虑很多事情&#xff0c;例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题&#xff0c;也就无从谈起可靠传输。 那么&#xff0c;TCP 是…

清华大学提出全新加速训练大模型方法SoT

近日&#xff0c;微软研究和清华大学的研究人员共同提出了一种名为“Skeleton-of-Thought&#xff08;SoT&#xff09;”的全新人工智能方法&#xff0c;旨在解决大型语言模型(LLMs)生成速度较慢的问题。 尽管像GPT-4和LLaMA等LLMs在技术领域产生了深远影响&#xff0c;但其处…

Navicat 技术指引 | 适用于 GaussDB 的查询编辑器

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

DNS的各种进阶新玩法

你们好&#xff0c;我的网工朋友&#xff0c;今天和你聊聊DNS。 01 什么是DNS&#xff1f; mac地址诞生&#xff0c;可是太不容易记忆了&#xff0c;出现了简化了IP形式&#xff0c;它被直接暴露给外网不说&#xff0c;还让人类还是觉得比较麻烦&#xff0c;干脆用几个字母算了…

【ARM CoreLink 系列 3.2 -- CCI-400,CCI-500, CCI-550 差异】

文章目录 CCI-400 和 CCI-500 差异ARM CCI-400ARM CCI-500ARM CCI-550CCI-400 和 CCI-500 差异 ARM的 CCI(Cache Coherent Interconnect)系列产品是用于多核处理器之间的高性能缓存一致性互连。CCI-400 和 CCI-500 是该系列中的两种设计,它们旨在允许多个处理器核心和其他资…

项目中如何配置数据可视化展现

在现今数据驱动的时代&#xff0c;可视化已逐渐成为数据分析的主要途径&#xff0c;可视化大屏的广泛使用便应运而生。很多公司及政务机构&#xff0c;常利用大屏的手段展现其实力或演示业务&#xff0c;可视化的效果能让观者更快速的理解结果并直观的看到数据展现。因此&#…

党建信息管理系统源码 支持在线交党费 附带完整的搭建教程

传统的党建管理模式通常采用手工方式&#xff0c;不仅效率低下&#xff0c;而且容易出错。随着组织规模的扩大和党员数量的增加&#xff0c;这种管理方式已经无法满足现实需求。此外&#xff0c;传统的党建管理模式缺乏在线交党费功能&#xff0c;给党员带来不便。因此&#xf…

图片转换成pdf格式的软件ABBYY16

ABBYY PDF这款提供多种图像处理选项&#xff0c;可提高源图像的质量&#xff0c;便于准确地识别光学字符。我们扫描纸质文档或从图像文件创建 PDF 时&#xff0c;务必选择合适的图像处理选项。而在ABBYY PDF 中包含下列图像处理选项。 识别文本 — 选择此选项会将文本层放在图…

关于JS stack trace解决办法

问题描述 npm run serve启动前端项目时&#xff0c;控制台输出下图一堆的文字&#xff0c;JS stack trace , 问题现象&#xff1a; JS stack trace Security context: 0000017B93ACFB61 <JS Object>1: init_scope_vars [0000017B93A04381 <undefined>:~3382] [p…

shopee数据分析软件丨探索Shopee数据分析软件——知虾

随着电子商务的快速发展&#xff0c;越来越多的商家和企业开始关注数据分析的重要性。在这个竞争激烈的市场中&#xff0c;了解消费者行为、市场趋势和竞争对手的策略是取得成功的关键。而Shopee数据分析软件——知虾&#xff0c;成为了许多商家和企业的首选工具。本文将深入探…

c++/windows软件绑定网卡加密,实现一机一码

&#x1f482; 个人主页:pp不会算法v &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 奇思妙想系列文章 一、c\c windows自动打开cmd并进入mysql 二、c\wind…