1.显式调用方法
Intent intent = new Intent(this, OtherActivity.class);//方法1 Intent intent2 = new Intent(); intent2.setClass(this, OtherActivity.class);//方法2 intent2.setClassName(this, "com.mh.MainActivity.OtherActivity");//方法3,此方法可用于打开其他的应用 intent2.setComponent(new ComponentName(this, OtherActivity.class));//方法4 startActivity(intent2);
2.隐式调用方法(只要action、category、data和要跳转到的Activity在AndroidManifest.xml中设置的匹配就OK
<activity android:name="com.mh.MutiActivity.OtherActivity"> <Intent-filter> <action android:name="com.mh.test.action" /> <category android:name="com.mh.java" /> <!-- 因为startActivity()方法中内置了该类别,索引必须加上此类别否则android.intent.category.DEFAULT无法跳转 --> <category android:name="android.intent.category.DEFAULT" /> <!-- 设置了哪些,则那些必须匹配,没设置的可以任意写 --> <data android:scheme="schemename" android:host="mh.com" android:path="/introduction" /> <!-- 数据类型 --> <data android:mimeType="txt/plain" /> <intent-filter> </activity>
3.跳转到另一个Activity后,当返回时能返回数据
a.在跳转的Activity端,调用startActivityForResult(intent2, 1)跳转到下一个Activity,其中第一个参数为传入的意图对象,第二个为设置的请求码;
b.跳转到第二个Activity后,调用setResult(100, intent)方法可返回上一个Activity,其中第一个参数为结果码,第二个为传入的意图对象
c.在第一个Activity通过onActivityResult()方法获得返回的数据
--------------------------------------------------------------
startActivityForResult(Intent intent, int requestCode)
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(int resultCode, Intent data)
这三个函数,尤其要注意他们的参数!
现在有两个activity A和B,假如我们从A跳转到B,再B完成相应的工作以后finish掉B,然后传数据给A,A在接受到数据以后做相应的操作。我们可以使用这三个函数:
A:
//启动B
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivityForResult(intent, 2);//2是我们自己定义常量,对应下面使用到的resultCode
B:
//do something
setResult(2, null);
finish();
以上主要代码完成后我们需要在A中override onActivityResult()函数:
A:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (2 == requestCode) {
//do something
}
}