Activity的基本用法
在AndroidManifest文件中注册
- 主活动的配置
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
通过<intent-filter>里面这两句的设置,应用的主活动就配置好了。
使用Intent在活动间穿梭
- 使用显式Intent
Intent intent = new Intent(FirstActivity.this, SecondAactivity.class);
startActivity(intent);
new Intent() 里第一个参数是 FirstActivity.this, 就是当前的上下文, 而SecondActivity.class 是要启动的活动。
- 使用隐式Intent
相较于显式Intent, 隐式Intent则更加含蓄。它是通过Activity的<action>和<category> 标签,来让系统分析要启动的相应活动,让用户进行选择。
隐式Intent的启动方法:
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
隐式Intent,需要添加action 和 category才能匹配对应的activity, 如果activity的<category>设置如下,则只声明action就可以了。
<category android:name="android.intent.category.DEFAULT"/>
-一个activity只能有一个action,但可以有多个category
-如果没有满足对应条件的activity存在,程序会崩溃。
- 更多隐式Intent的用法
在<intent-filter> 中配置<data>标签,用于指定当前活动能够相应什么类型性的数据。
- android:scheme 指定数据的协议部分, 例 “http”
- android:host 指定数据的主机名部分, 例 “www.baidu.com”
- android : port 数据的端口部分,一般紧随在主机名后。
- android : mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。
(1). 打开浏览器 - intent
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
- activity 标签设置
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
(2). 打开拨号界面
Intent intent = new Intent(Intent.ACTION_DAIL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
启动这个intent 会自动打开拨号界面。
- 向下一个activity 传递数据
在开启下一个activity的时候可以传递数据, string, int, boolean等数据类型。
- 给NextActivity 添加数据
String data = "content pass to next activity";
String key = "key for passing content";
Intent intent = new Intent (ThisActivity.this, NextActivity.class);
intent.putExtra("key", data);
startActivity(intent);
- NextActivity 打开传递的数据
在 NextActivity的 onCreate()方法中获取数据
String key = "key for passing content";
Intent intent = getIntent();
String data = intent.getStringExtra(key);
- 返回数据给上一个activity
要想开启一个可以返回数据的活动,需要使用startActivityForResult()方法。
假设我们现在在ThisActivity中,要开启 NextActivity,并让NextActivity返回数据。
- ThisActivity 中开启下一个activity
int requestCode = 1;
Intent intent = new Intent (ThisActivity.this, NextActivity.class);
startActivityForResult(intent, requestCode);
- NextActivity 结束并返回数据给前一个活动
Intent intent = new Intent();
intent.putExtra("key", "value");
setResult(RESULT_OK, intent);
finish(); // 结束当前活动
- ThisActivity 中读取 NextActivity返回的数据
protected void onActivityResult(int requestcode, int resultcode, Intent intent) {
switch(requestcode) {
case 1:
if (resultcode == RESULT_OK) {
String data = intent.getStringExtra("key");
}
break;
}
}
今天就先聊到这里啦,下一篇我们接着讨论activity的生命周期~~
送你们一支大勋❀