首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Activity的起动与通信

2012-07-01 
Activity的启动与通信Activity是Android组件中最基本也是最常见的组件,一般情况下一个Activity就是对应一

Activity的启动与通信

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

?

热点排行