1.显式的Intent
intent是用来各各活动之间切换的,还可以用来传递参数。
项目还是使用之前创建的ActivityTest项目,这里新建一个活动SecondActivity.java,并且勾选创建second_layout.xml。
在second_layout.xml。写入代码如下。
<?xml version="1.0" encoding="utf-8"?> <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>
AS已经自动在AndroidMainfest.xml中自动注册了该活动。
<activity android:name=".SecondActivity"></activity>
而且也在该活动中自动引入了second_layout.xml的布局。
setContentView(R.layout.second_layout);
2.在FirstActivity中onClick()方法添加代码
Intent intent=new Intent(FirstActivity.this,SecondActivity.class); startActivity(intent);
使用Intent声明并用构造方法创建一个Intent对象。
Intent()构造方法中,有两个参数。第一个是Context,即上下文,第二个是目标活动,Class类。
3.隐式Intent
不明确指定目标活动,而是由系统自行分析,最后响应活动。
4.在AndroidMainfest.xml中添加代码
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <!--表示该活动可以响应--> <category android:name="android.intent.category.DEFAULT"/> <!--设置类型为默认--> </intent-filter> </activity>
5.修改FirstActivity中按钮的点击事件
Intent intent=new Intent("com.example.activitytest.ACTION_START");
注意这里Intent构造方法传参的是一个action字符串。
注意:每一个Intet对象只能有一个action,但是可以有多个category。
intent.addCategory("com.example.activitytest.MY_CATEGORY");//通过此方法添加category
注意:只有当action与category都是匹配的,活动才能响应。如果不是程序会崩溃的。
原文地址:https://www.cnblogs.com/Unlimited-Rain/p/8832151.html
时间: 2024-11-13 09:50:10