Activity是Android组件中最基本也是最常见的组件,一般情况下一个Activity就是对应一个单独的屏幕。
注:一下代码中父Activity用parent表示,子Activity用child表示(子Activity对应的Java文件为child.java)。
一.启动Activity
要启动一个新的Activity,有以下三个步骤(在父Activity中执行)
1.新建一个Intent(有两种方法)
方法①:
Intent intent = new Intent();
intent.setClass(parent.this, child.class);
方法②:
Intent intent = new Intent(parent.this, child.class)
2.启动Activity(有两种方法)
方法①:
startActivity(intent);
方法②:
startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数
以上两个方法的差异在于可以在方法②启动的Activity关闭时,回调数据给启动它的父Activity,进而实现Activity之间的通信。(稍后将会讲述)
3.在AndroidManifest.xml文件中注册Activity
在AndroidManifest.xml文件下的“<application></application>”标签之间填入一个新的<activity>标签,例:
<activity android:name=".child" > </activity>
其中,<activity>标签里可以加入“android:them”属性来设置该Activity的样式。
二.Activity之间的通信
Activity之间有两种通信方式
方式①:父Activity向子Activity传递信息
//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivity(intent);
//在子Activity中获取数据
String msg = this.getIntent().getExtras().getString("msg");
方式②:子Activity关闭后,要回调数据给父Activity
//在父Activity创建子Activity时执行
Intent intent = new Intent(parent.this, child.class);
Bundle bundle = new Bundle();
bundle.putString("msg", msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
startActivityForResult(intent, 0);
//当第2个参数大于等于时,将会在子Activity关闭时调用父Activity的onActivityResult()函数
//在子Activity关闭时
Intent intent = getIntent();
Bundle bundle = new Bundle();
bundle.putString("msg",msg); //msg为要传递的信息(String类型)
intent.putExtras(bundle);
setResult(RESULT_OK,intent);
finish();
//在父Activity中加入onActivityResult函数,以接收回调的信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data_intent){
super.onActivityResult(requestCode, resultCode, data_intent);
if(resultCode == RESULT_CANCELED)
setTitle("cancel");
else if (resultCode == RESULT_OK){
Bundle bundle = data_intent.getExtras();
if(bundle != null){
//获取子Activity传送的数据
String msg = bundle.getString("msg");
}
}
}