android中的意图有显示意图和隐式意图两种,

显示意图要求必须知道被激活组件的包和class

隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件

A 主activity  B 接收跳转的activity

步骤

1:在主配置文件中声明B 至少要声明一个android:name属性

[html
<activity 
          
android:name=".DemoActivity" 
           android:label="@string/demoActivity"

           <intent-filter> 
 
               <!--
隐士意图中指定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("com.itcast.intent.DemoActivity"); 
        //
不管在主配置文件中有沒有声明跳转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的跳转的几个方法

android intent 隐式意图和显示意图(activity跳转)的更多相关文章

  1. android 21 隐式意图启动系统预定义activity

    Intent intent=new Intent(LoginActivity.this, MainActivity.class);//显示意图启动,显示从一个activity到另一个activity, ...

  2. 安卓Intent(隐式)

    相对于显式Intent(明确指出了目标组件名称的Intent),隐式Intent,没有明确指出目标组件名称.显式Intent直接用组件的名称定义目标组件,这种方式很直接.但是由于开发人员往往并不清楚别 ...

  3. android intent隐式调用之一个应用程序启动另一个应用程序

    理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似:另一种是隐式的Intent,即Inten ...

  4. 【C++自我精讲】基础系列五 隐式转换和显示转换

    [C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...

  5. C++模板之隐式实例化、显示实例化、隐式调用、显示调用和模板特化详解

    模板的实例化指函数模板(类模板)生成模板函数(模板类)的过程.对于函数模板而言,模板实例化之后,会生成一个真正的函数.而类模板经过实例化之后,只是完成了类的定义,模板类的成员函数需要到调用时才会被初始 ...

  6. 第一行Kotlin系列(二)Intent隐式显式跳转及向下传值

    1.Intent显式跳转页面 val button5 = findViewById<Button>(R.id.mButton5) button5.setOnClickListener { ...

  7. Android 隐式意图和显示意图的使用场景

    本文实现一个隐式意图的应用,激活短信应用 public void click4(View view) { Intent intent = new Intent(); intent.setAction( ...

  8. Android 设置隐式意图

    AndroidManifest.xml对于被调用的activity: <activity android:name="com.wuyou.twoactivity.OtherActivi ...

  9. android 利用隐式Intent打开图片

    实现功能   点击"查看图片"时能够跳出提示,选择系统图库打开还是自己编写的应用打开,并且对于下载好的图片也有效. 1.我将 qiaoba.jpg 放在 res/drawable  ...

随机推荐

  1. 加密算法 - RSA

    与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥. 就是有2把钥匙1.使用publicKey可以对数据进行加密2.使用Key才能对数据进行解密单方向传输用公钥加密的数据,只有私钥 ...

  2. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  3. Android sqlite 数据库在java代码中的增删改查

    private void queryPerson(PersonSQLiteOpenHelper personSQLiteOpenHelper) { SQLiteDatabase sqLiteDatab ...

  4. 【Uvalive 5834】 Genghis Khan the Conqueror (生成树,最优替代边)

    [题意] 一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少.最后求Q ...

  5. AFNetworking网络请求的get和post步骤

      1.首先通过第三方:CocoaPods下载AFNetworking 1.1.先找到要查找的三方库:pod search + AFNetworking 1.2.出来一堆列表页面,选择三方库最新版本命 ...

  6. Android MediaPlayer状态机

    对播放音频/视频文件和流的控制是通过一个状态机来管理的.下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态.椭圆代表MediaPlayer对象可能驻留的状态.弧线表示驱动M ...

  7. kernel 校验和实现

    kernel 校验和实现 Kernel checksum implementation ) TCP包的错误检测使用16位累加和校验. 除了TCP包本身, TCP校验数据块还包括源IP地址,目的IP地址 ...

  8. hadoop伪分布安装

    解压 将安装包hadoop-2.2.0.tar.gz存放到/home/haozhulin/install/目录下,并解压 #将hadoop解压到/home/haozhulin/install路径下,定 ...

  9. 一起啃PRML - 1.2.1 Probability densities 概率密度

    一起啃PRML - 1.2.1 Probability densities @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 我们之前一直在讨论“谁取到 ...

  10. HDU- Who Gets the Most Candies?

    Who Gets the Most Candies? Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 262144/131072K (J ...