1.1Activity跳转
//拨打电话(隐式启动)
public void click(View view){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
Uri data=Uri.parse("tel:"+"110");
intent.setData(data);
startActivity(intent);
}
//打开网页/隐式启动
public void click2(View view){
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
Uri data = Uri.parse("http://"+"www.baidu.com");
intent.setData(data );
startActivity(intent);
}
//隐式启动ScondActivity
public void click3(View view){
Intent intent = new Intent();
intent.setAction("a.b.c");
Uri data = Uri.parse("hehe:"+"你好啊");
intent.setDataAndType(data, "text/text");
startActivity(intent);
}
//隐士启动拨号器
public void click4(View view){
Intent intent = new Intent();
intent.setAction(intent.ACTION_DIAL);
Uri data=Uri.parse("tel:"+"110");
intent.setData(data);
startActivity(intent);
}
//显示启动ScondActivity
public void click5(View view){
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
intent.putExtra("三国", "曹操");
startActivity(intent);
}
//显示启动拨号器
public void click6(View view){
//01-14 10:13:00.929: I/ActivityManager(384):
//Displayed com.android.contacts/.activities.DialtactsActivity: +388ms
Intent intent = new Intent();
intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity");
startActivity(intent);
}
//打开网页/显式启动
public void click7(View view){
//01-14 10:27:46.329: I/ActivityManager(384):
//Displayed com.android.browser/.BrowserActivity: +295ms
Intent intent = new Intent();
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
startActivity(intent);
}
<manifest
<application
<activity
android:name=".SecondActivity"
android:label="我是SecondActivity"
>
<intent-filter>
<action android:name="a.b.c" />
<data android:scheme="hehe"/>
<data android:mimeType="text/text"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
1.2获取打开的Activity销毁前设置的数据-startActivityForResult
1.当前类
Intent intent = new Intent(mContext, CarTypeActivity.class);
//startActivityForResult(android.content.Intent intent, int requestCode)
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (resultCode == 1) {
mCarModelId = data.getExtras().getInt("carModelId");
String carModelName = data.getExtras().getString("carModelName");
mTvJoinType.setText(carModelName + "");
}
break;
default:
break;
}
}
2.CarTypeActivity类
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CarTypeBean.DataBean dataBean = mList.get(position);
Intent intent = new Intent();
intent.putExtra("carModelId", dataBean.getId());
intent.putExtra("carModelName", dataBean.getBrand() +" "+ dataBean.getModel());
//setResult (int resultCode, Intent data)
setResult(1, intent);
finish();
}
});
2.1 隐式跳转
- 定义:通过intent-filter中的action进行的跳转就是隐式跳转。
- 特定
- 如果一个Activity有多个intent-filter,那么我们只需要匹配上一个,就可以将其启动起来。
- 如果category为DEFAULT,那么可以不用管。
- 如果一个intent-filter有多个category,那么匹配一个即可。
- 如果intent-filter有多个data标签,那么匹配一个即可。
- 如果自定义Intent-filter,Action可以自定义,但是category必须使用系统提供的
- 如果intent-filet既有scheme又有mimeType,那么在设置数据的时候就必须同时指定scheme和type,使用的API是intent.setDataAndType(Uri,Type);
- 一般用于不同app之间的调用
- 获取数据
Intent intent = getIntent();
Uri data = intent.getData();
2.2 显示跳转
- 定义:通过字节码或者要跳转的Activity的全类名进行跳转。
- 显示跳转获取数据
- 传递数据
- intent.putExtra(key,value);
- 获取数据
- intent.getStringExtra(key); 2.
- 传递数据
2.3 Intent可以携带的数据种类
1. 8种基本数据类型和String以及他们的数组形式
2. 实现了Parcelable(序列化对象的接口,类似Serializable)接口的对象
3. 实现了Serializable接口的对象