- 简介:要在各个活动中穿梭,即由主活动跳转到其他活动则需要使用intent
- 使用显示的 Intent:
(1)创建一个活动 SecondActivity (com.example.activity->new->activity->emptyActivity)并勾选Generate Layout File(自动创建一个·布局文件)并命名为second_layout。自动创建的文件,目前看不懂,使用LinearLayout替换,定义了一个button
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button 2" />
</LinearLayout>
(2)任何一个活动都是要在AndroidManifest.xml中注册的,但是它已经帮我们注册好了
<activity android:name=".SecondActivity">
</activity>
(3)使用显示Intent
Intent有多个构造函数的重载,其中一个是Inrtent(Context packageContex, <?>cls)其中第一个参数要求提供启动活动的上下文,第二个参数class则是则是要启动的目标活动.然后我们使用Activitty类中的startActivity()方法启动活动,它接受一个Intent 参数
button1.setOnClickListener(new View.OnClickListener() { //建立监听器
@Override
public void onClick(View v) {
Intent intent = new Intent(FristActivity.this,SecondActivity.class);
startActivity(intent);
}
});
效果接受按下button_1之后跳转到SecondActivity活动。
- 使用隐式 Intent 不明确我们指出使用哪个活动,而是由系统分析这个Intent 并帮我们找到合适的活动
(1) 在标签下配置<intent_filter>,表示当前活动可以响应com.example.activitytest.ACTION_START这个action,标签中包含一些附加信息
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_category" />
</intent-filter>
</activity>
(2)修改FristActivity 中的按钮点击事件:
button1.setOnClickListener(new View.OnClickListener() { //建立监听器
@Override
public void onClick(View v) {
Intent intent = new Intent(com.example.activitytest.ACTION_START);
startActivity(intent);
}
});
- 更多隐式 Intent 的用法:我们不仅可以打开自己创建的活动,还可以启动其他应用程序
(1)
button1.setOnClickListener(new View.OnClickListener() { //建立监听器
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"))
startActivity(intent);
}
});
6.传递数据
(1)向下传递数据
FristActivity:
button1.setOnClickListener(new View.OnClickListener() { //建立监听器
@Override
public void onClick(View v) {
//makeText 有3个参数,最后调用show()
String date = "hello word";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_date",date);
startActivity(intent);
}
});
Intent 中提供了putExtra()方法可以把想要的数据暂时存放在Intent中,在SecondActivity中使用getIntent()方法获取到用于启动SecondActivity中的Intent,使用getStringExtra()方法传入相关键值,然后打印出日志
SecondActivity:
protected void onCreate(Bundle savedInstanceState) {
String TAG = "SecondActivity";
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Intent intent = getIntent();
String data = intent.getStringExtra("extra_date");
Log.d("TAG", data);
}
(2)向上传递数据