android小知识之意图(intent)
android中的意图有显示意图和隐式意图两种,
显示意图要求必须知道被激活组件的包和class
隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件
A 主activity B 接收跳转的activity
步骤
1:在主配置文件中声明B 至少要声明一个android:name属性
[html]
<activity
android:name=".DemoActivity"
android:label="@string/demoActivity" >
<intent-filter>
<!-- 隐士意图中标记自己的action-->
<action name="action"/>
<category android:name="android.intent.category.DEFAULT"/>
<!-- 隐士意图中指定intent的名字 自己定义 可匹配多项 -->
<action android:name="com.itcast.intent.DemoActivity" />
<!-- 隐式intent需要指定的activity的类型,可自己定义该值,需要在调用的时候相对应不写该项默认为 android.intent.category.DEFAULT,可匹配多项 -->
<category android:name="android.intent.category.DEFAULT" />
<!-- 指定传想该activity数值的类型 和主机,如果指定该项,就必须在跳转activity的时候传入还数据和主机名 -->
<data
android:host="cn.itcast.demo"
android:scheme="itcast" />
</intent-filter>
</activity>
2:在A的布局文件中一个textview和button,并添加点击事件
[html]
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个activity" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="open"
android:text="跳转" />
3:点击事件触发的集中intent意图
[java]
/**
* 意图,描述一个动作,激活一个组件,使用其他的activity需要现在主文件中配置activity的名字等属性
* intent 要去做一件事
*
* @param view
*/
public void open(View view) {
/**
* 方法一
*/
Intent intent1 = new Intent();
// 1.是当前的包名,2跳转activity的类名,一定要加上包名 =
intent1.setClassName("com.itcast.intent", "com.itcast.intent.DemoActivity");
// startActivity(intent1);
/**
* 方法二
*/
Intent intent2 = new Intent(this, DemoActivity.class);
// startActivity(intent2);
/**
* 方法三
*/
Intent intent3 = new Intent();
ComponentName component = new ComponentName("com.itcast.intent", "com.itcast.intent.DemoActivity");
intent3.setComponent(component);
// startActivity(intent3);
/**
* 上面三种方法要求必须知道被激活组件的包和class,称为显示意图
*/
// ******************************************************************//
/**
* 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件<br>
* 如果要激活另外程序的组件
*/
Intent intent = new Intent();
intent.setAction("action");
// 不管在主配置文件中有沒有声明跳转activity的category,都要写该项,不然报错找到activity,不些有系統會以默認的類型
intent.addCategory("android.intent.category.DEFAULT");
// 如果在声明activity的时候指定了data属性,在跳转的时候就一定要设置他的data属性值,和配置的属性值相等,不然也会报找不到的错误
intent.setData(Uri.parse("itcast://cn.itcast.demo"));
// startActivity(intent);
Intent imageIntent = new Intent();
imageIntent.setAction(Intent.ACTION_PICK);
imageIntent.setType("image/*");// 设置数据类型
startActivity(imageIntent);
}
DemoActivity 不需要做任何事,只要继承activity,并重写他的oncreate方法就可以了,这个例子只是测试activity的跳转的几个方法
下面记录下个人对startactivityforresult(intent)的理解:
主要是跳转到同一个类却要做不同处理的时候用.startActivityForResult(intent, int);前面的intent指要跳转的类名,后面的数字是多少由自己定义,用这个方法由A类跳转到B类的话,B类做完要做的事情后只要这样写:Intent intent=new Intent();setResult(1, intent);//这个1也是自己定义,只要自己清楚它代表的含义.finish();然后在A类重写protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data);}这个方法,第一个参数就是上面的A类传过去的int,第二个是B类返回的1,(可以是任意数字),第三个参数是B类的intent,只要判断data不为空,即是B类返回后调用的这个方法.此时可以根据前两个参数的不同情况做不同处理.
转载于:https://www.cnblogs.com/ws5861/p/3463721.html
android小知识之意图(intent)相关推荐
- Android小知识10则(上)(2018.8重编版)
Android小知识10则(下) 目录 前言 横竖屏锁定 不同分辨率的图标 将字符串写在资源文件中 为AlertDialog设置点击监听 ProgressDialog了解一下 最后 前言 Androi ...
- Android小知识10则(下)
Android小知识10则(上) github传送门 注: 在目录中点击可以跳转到具体代码页 目录 Chronometer和CountDownTimer计时器 Chronometer的使用 Count ...
- android小知识(1)
1.Android名称的由来. 大家可能不知道,Android一词的本义原指"机器人",它也是谷歌于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操 ...
- Android 基础知识系列之 Intent 常用方法
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 本文主要是总结Intent 常用的方法,并封装成Utils类中 主要涉及以下内容 通 ...
- Android小知识-Fragment
转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 今天还是总结下Android中的小知识点Fragment,Fragmen ...
- Android 小知识
1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environmen ...
- android byte转string_唠点儿你不一定知道的Android小知识
本文作者 作者:郑卫超 链接: https://vchao.blog.csdn.net/article/details/104349868 本文由作者授权发布. 1. YYYY 和 yyyy 不一样 ...
- Android 小知识
记录点零碎的小知识点. 目录 1.BindingView中引用include中的控件 2.将文件复制到手机根目录中 3.android string占位符 4.动态更改shape色值 5.查看apk签 ...
- Android小知识-电量优化WakeLock的使用
本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 Android会不断关闭各 ...
最新文章
- Struts2标签库常用标签(转)
- 布道微服务_06微服务调用的监控
- 停车场计费算法 php,停车场收费算法,思路卡住了求补完!该如何处理
- patent sub categories
- 如何在 ASP.NET MVC 中集成 AngularJS
- Atom使用方法(快捷键,插件,汉化)
- JS 获取当前日期时间(兼容IE FF)
- mft按钮设计_火力发电厂典型MFT逻辑控制实现.pdf
- Python实现web动态服务器
- python os如何创建文件夹_Python怎样创建文件夹,怎样删除文件夹
- mongo 学习笔记之(基本命令)
- struts2的struts.xml的详细配置1-1
- 小程序自定义tabBar(类似咸鱼)
- win7 uefi 无法对计算机,U盘UEFI模式无法启动WIN7安装解决教程
- 你真的了解“手机端的 C/S架构 向 B/S架构 迁移”吗
- 机载激光雷达的应用现状及发展趋势
- 刘墉写给女儿的 忠告
- Java、JavaScript、C语言数组的创建
- 排序与分页Pagination
- 如何把一组计算机做成云,旧电脑如何变成云电脑?进来了解下云电脑
热门文章
- Mysql ERROR 1067: Invalid default value for ‘auth_time‘
- 【sprinb-boot】资源、配置、lib分离打包
- ws配置 zuul_SpringCloud系列研究---服务网关zuul
- 计算机的键盘功能,电脑键盘功能
- java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
- python中的loop啥意思_python怎么进行loop
- python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板
- Apache Flink 零基础入门(八)Flink中指定算子的方式
- why在重写equals时还必须重写hashcode方法
- Pycharm SSH 容器中的python环境