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)相关推荐

  1. Android小知识10则(上)(2018.8重编版)

    Android小知识10则(下) 目录 前言 横竖屏锁定 不同分辨率的图标 将字符串写在资源文件中 为AlertDialog设置点击监听 ProgressDialog了解一下 最后 前言 Androi ...

  2. Android小知识10则(下)

    Android小知识10则(上) github传送门 注: 在目录中点击可以跳转到具体代码页 目录 Chronometer和CountDownTimer计时器 Chronometer的使用 Count ...

  3. android小知识(1)

    1.Android名称的由来. 大家可能不知道,Android一词的本义原指"机器人",它也是谷歌于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操 ...

  4. Android 基础知识系列之 Intent 常用方法

    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 本文主要是总结Intent 常用的方法,并封装成Utils类中 主要涉及以下内容 通 ...

  5. Android小知识-Fragment

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 今天还是总结下Android中的小知识点Fragment,Fragmen ...

  6. Android 小知识

    1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environmen ...

  7. android byte转string_唠点儿你不一定知道的Android小知识

    本文作者 作者:郑卫超 链接: https://vchao.blog.csdn.net/article/details/104349868 本文由作者授权发布. 1. YYYY 和 yyyy 不一样 ...

  8. Android 小知识

    记录点零碎的小知识点. 目录 1.BindingView中引用include中的控件 2.将文件复制到手机根目录中 3.android string占位符 4.动态更改shape色值 5.查看apk签 ...

  9. Android小知识-电量优化WakeLock的使用

    本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 Android会不断关闭各 ...

最新文章

  1. Struts2标签库常用标签(转)
  2. 布道微服务_06微服务调用的监控
  3. 停车场计费算法 php,停车场收费算法,思路卡住了求补完!该如何处理
  4. patent sub categories
  5. 如何在 ASP.NET MVC 中集成 AngularJS
  6. Atom使用方法(快捷键,插件,汉化)
  7. JS 获取当前日期时间(兼容IE FF)
  8. mft按钮设计_火力发电厂典型MFT逻辑控制实现.pdf
  9. Python实现web动态服务器
  10. python os如何创建文件夹_Python怎样创建文件夹,怎样删除文件夹
  11. mongo 学习笔记之(基本命令)
  12. struts2的struts.xml的详细配置1-1
  13. 小程序自定义tabBar(类似咸鱼)
  14. win7 uefi 无法对计算机,U盘UEFI模式无法启动WIN7安装解决教程
  15. 你真的了解“手机端的 C/S架构 向 B/S架构 迁移”吗
  16. 机载激光雷达的应用现状及发展趋势
  17. 刘墉写给女儿的 忠告
  18. Java、JavaScript、C语言数组的创建
  19. 排序与分页Pagination
  20. 如何把一组计算机做成云,旧电脑如何变成云电脑?进来了解下云电脑

热门文章

  1. Mysql ERROR 1067: Invalid default value for ‘auth_time‘
  2. 【sprinb-boot】资源、配置、lib分离打包
  3. ws配置 zuul_SpringCloud系列研究---服务网关zuul
  4. 计算机的键盘功能,电脑键盘功能
  5. java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
  6. python中的loop啥意思_python怎么进行loop
  7. python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板
  8. Apache Flink 零基础入门(八)Flink中指定算子的方式
  9. why在重写equals时还必须重写hashcode方法
  10. Pycharm SSH 容器中的python环境