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"); } } }