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. 设置UITextField的placeholder的颜色

    [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

  2. websql

    http://blog.darkcrimson.com/2010/05/local-databases/ http://www.oschina.net/question/12_26204 webkit ...

  3. 需要插入子集的时候如何更新父级ID

    场景模拟: 我们需要在不同的新闻站点中采集新闻信息,  所以需要在数据库中保存一个新闻站点表(Site) 一个新闻表(News) 两表之间的关系是        Site(1)-News(N) 数据库 ...

  4. Android 制作一个网页源代码浏览器(HttpURLConnection)

    package com.wuyou.htmlcodeviewer; import android.os.Bundle; import android.os.Handler; import androi ...

  5. 【Xamarin开发 Android 系列 6】 Android 结构基础(上)

    原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...

  6. CentOS 如何将.deb 文件 转换.rpm

    CentOS 如何将.deb 文件 转换.rpm [root@localhost tmp]#tar zxvf alien_8.88.tar.gz [root@localhost alien]#perl ...

  7. 利用if else 求房贷

    static void Main(string[] args)        {            while (true)     //主要就是公式的运用和if else 的嵌套         ...

  8. bzoj1570

    购买的机票限制和数据范围很容易想到是网络流不难想到每个城市按时刻拆点,这也是一个经典模型由于时间不会太大,我们穷举时间,不断在残留网络上建图,跑最大流直至总流量为k即可 ; type node=rec ...

  9. c++ lambda返回类型自动推导的一些需要注意的地方

    一句话,lambda返回类型自动推导走的是auto,而不是decltype,注意. class ObjectA { public: ObjectA() { val_ = ++g; } ObjectA( ...

  10. _GUN_SOURCE宏

    问题描述:在编译程序时,提示一个错误和一个警告. error:storage size of tz isn’t know: 其中tz是struct timezone类型的变量. warning:imp ...