Activity 定义
Activity 是一种可以包含用户界面的组件,主要用于跟用户交互。
1.1 Activity 的注册
1.1.1 Activity 一般注册
一个 Activity 要正常启动必须要在 Manifest 文件中的 application 标签中注册,注册方式如下:
<activity android:name="包名" /activity>
1.1.2 主 Activity 注册
主 Activity 的注册方式有所差异,如下:
<activity android:name=".FirstActivity"
android:lable="This is Activity Title">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
1.2 Activity 之间的跳转
Intent 是 Android 程序中各组件之间进行交互的重要方式,它不仅可以指明当前组件想要执行的活动,还可以在不同组件之间传递数据。
Intent 一般用于启动活动、启动服务、发送广播等场景。
Intent 分为两种:显式 Intent 和 隐式 Intent。
1.2.1 显式 Intent 用法
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
1.2.2 隐式 Intent 用法
第一步、在 Manifest 文件中注册如下:
<activity android:name=".SecondActivity" <intent-filter> <action android:name="com.demo.thorn.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
第二步、在需要跳转的地方:
Intent intent = new Intent("com.demo.thorn.ACTION_START";) startActivity(intent);
1.2.3 更多隐式 Intent 用法
调用系统 Action 启动浏览器
Intent intent = new Intent(Intent.ACTION_VIEW); Intent.setData(Url.parse("http://www.baidu.com/")); startActivity(intent);
调用系统 Action 启动浏览器
Intent intent = new Intent(Intent.ACTION_DIAL); Intent.setData(Url.parse("tel:10086")); startActivity(intent);
1.3 Activity 之间的数据传递
Activity 之间的数据传递很常用,传递的数据类型也有很多,比如字符串、整数型、序列化的对象等等
1.3.1 向下一个 Activity 传数据(A 传给 B)
第一步、A 中代码:
String data = "Hello SecondActivity"; Intent intent = new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("DataTag",data); startActivity(intent);
第二步、B 中代码:
Intent intent = getIntent(); String data = intent.getStringExtra("DataTag");
1.3.2 返回数据给上一个 Activity(B 返回数据给 A)
A 中代码:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivityForResult(intent,13);
B 中代码:
Intent intent = new Intent(); intent.putExtra("DataReturnTag","this is return data"); setResult(RESULT_OK,intent);//这里有两种选择 RESULT_OK 和 RESULT_CANCELED finish();
A 中再接受 B 返回的数据,复写如下方法:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==13 && resultCode==RESULT_OK){ textView.setText(data.getStringExtra("cur_time")); } }