Intent & Activity

Intent就是我们要去哪里,从这个activity要前往另一个Activity就需要用到Intent。并且需要提供一些动作,这些目标的分类,以及达成这些目标所需要的一些数据等等。Intent通过Action,Category和data等属性进行了相应的描述,我们想做某些事情(达成某些目标),就需要填写这些参数的部分或全部,这样Android才会帮助我们自动的去进行某些操作。
所有的Activity都必须先在AndroidManifest.xml里面配置声明:

<activity android:name=”.TestService” android:label=”@string/app_name”>
            <intent-filter>
                <action android:name=”android.intent.action.MAIN” />
                <category android:name=”android.intent.category.LAUNCHER” />//给Android系统用的,表示这个Activity可以显示在桌面上(Launcher中)
                <action android:name=”android.intent.action.STORE_REQUEST”></action>
                <category android:name=”android.intent.category.ALTERNATIVE” />//这个Activity可以变成OptionMenu,供其他Activity直接调用。
                <category android:name=”android.intent.category.SELECTED_ALTERNATIVE” />
            </intent-filter>

<intent-filter>
                <action android:name=”android.intent.action.TIGERTIAN”></action>
                <category android:name=”android.intent.category.DEFAULT”></category>
                <data android:scheme=”x-id”></data>
            </intent-filter>

</activity>

 

第二个filter可以在其他Activity中用如下方法直接调用:

                 Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");
                Intent in = new Intent();
                in.setAction("android.intent.action.TIGERTIAN");
                in.addCategory(Intent.CATEGORY_DEFAULT);
                in.setData(uri);
                //in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
                TestActivity.this.startActivity(in);

  • category一定要配置,否则报错:找不到Activity
  • 当两个activity具有相同的action类型,都为“android.intent.action.EDIT”,当Intent的action属性为Intent.ACTION_EDIT时,系统不知道转向哪个Activity时,就会弹出一个Dialog列出所有action为“android.intent.action.EDIT”的Activity供用户选择

IntentFilter是配合Intent而生的,Intent其中一种构造方法指定两个Activity,确保正确的将前一个活动压入栈中,才能在触发返回键的时候活动能够正确出栈。

Intent有六种构造函数:

  1. Intent() 空构造函数
  2. Intent(Intent o) 拷贝构造函数
  3. Intent(String action) 指定action类型的构造函数,action就是对应在AndroidMainfest.xml中的action节点的name属性值
  4. Intent(String action, Uri uri) 指定Action类型和Uri的构造函数,URI主要是结合程序之间的数据共享ContentProvider
  5. Intent(Context packageContext, Class<?> cls) 传入组件的构造函数
  6. Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前两种结合体
Intent intent = new Intent(IntentDemo.this, AnotherActivity2.class);//从IntentDemo这个activity切换到AnotherActivity2
startActivity(intent);

利用Intent在Activity之间传递数据

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web

%d bloggers like this: