Android中的Intent是连接各种组件的桥梁,它可以启动一个Activity并且启动他的时候传递参数给此Activity。
Intent有显示意图和隐式意图之分,所谓显示意图,是指在创建意图的时候,显示的创建某一个Activity
的Intent 比如
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
隐式意图,指的是在配置文件中加入某一Activity的action,然后在创建某intent的时候就可以通过该配置来创建
比如给OtherActivity创建一个action
<activity android:name=".OtherActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.yuchao.intent" />
<category android:name="android.intent.category.DEFAULT" />//这一行必须加
</intent-filter>
</activity>
然后在MainActivity中可以这样创建连接OtherActivity的intent
Intent intent = new Intent("com.yuchao.intent");
效果和上面的显示意图一样
Activity之间互相传递数据也是通过Intent来实现的
Bundle bundle = new Bundle();
bundle.putString("name", "yuchao");
bundle.putInt("age", 23);
intent.putExtras(bundle);
startActivity(intent);
Bundle是一个类似Map一样的数据结构,通过键值对来标识数据,这样intent在启动OtherActivity时就可以取出其中的数据
Bundle bundle= this.getIntent().getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");
intent的启动方法有两种,一种是直接调用startActivity(Intent intent)
另外一种方法是startActivityForResult(Intent intent,int requestCode)
前一种方法创建的intent在调用OtherActivity之后若还想跳回MainActivity页面,必须再次使用一次startActivity,而后面一种可以一次性地完成这个任务,该方法有两个参数,一个就是Intent,另外一个是requestCode,用来标识是哪个Activity来启动OtherActivity的,显然,这里是MainActivity。当OtherActivity被关闭(调用finish())的时候,程序会自动跳到MainActivity上,这里就需要MainActivity重写一个方法onActivityResult(int requestCode, int resultCode, Intent data),requestCode就是以上所述MainActivity传给OtherActivity的,resultCode是OtherActivity通过setResult(999,intent)给MainActivity反馈的,用来标识是哪一个Activity给MainActivity反馈的,intent中包含了反馈回来的数据
有关Intent的简单知识讲解完毕!