假设:FirstActivity--->SecondActivity
一、显示Intent
(一)直接跳转,即通过java代码直接指定跳转目标
//启动 跳转
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent)
//第二种写法
startActivity(new Intent(this,SecondActivity.class));
Activity关闭:一般需要在 SecondActivity 中加上 finish()函数,表示这个 Activity 结束
(二)回调(使用多)
很多情况下,从 FirstActivity 跳转到 SecondActivity 后,需要在 SecondActivity 进行相应的操作,如更新数据之类,然后返回 FirstActivity,通知 FirstActivity 执行某些操作,这时候就需要用到回调了
(1)FirstActivity中,
startActivityForResult()有两个参数:
- Intent:将要跳转的 Activity
- requestCode:请求码,用于调用 Activity 的 onActivityResult()函数,如这里的11
//FirstActivity
startActivityForResult(new Intent(this,SecondActivity.class),11);
(2)SecondActivity中,
setResult()接受两个参数:
- resultCode:从这个 SecondActivity 返回的结果码
- Intent:要返回给 FirstActivity 的数据
//SecondActivity
setResult(22,new Intent().putExtra("str","from second activity"));
(3) FirstActivity 中,
重写onActivityResult()
@Override
protected void onActivityResult(int requestCode,int resultcode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode ==11 resultCode==22){
System.out.println(data.getStringExtra("str"));
}
}
二、隐式Intent(了解)
主要应用于不同应用之间,需要intent filter(过滤器) , 即在什么样的条件下,可以启动
<manifest ... >
<application ... >
<activity android:name=".ExampleActivity"
android:icon="@drawable/app_icon">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
...
</application ... >
...
</manifest >