2024年3月14日发(作者:)

多个Activity之间的相互调用:

新建一个继承Activity的类,在功能清单文件中添加进上面Activity配置代码,

打开新的Activity:startActivity(new Intent(, ));

打开新的Activity,并传递若干个参数给它:

Intent intent = new Intent(, )

Bundle bundle = new Bundle();//该类用作携带数据

ing("name", "传智播客");

("age", 4);

ras(bundle);//附带上额外的数据

startActivity(intent);

在另一个Activity里面接收参数:

Bundle bundle = this. getIntent_r(). getExtras_r();

String name = bundle. getString_r("name");

int age = bundle. getInt_r("age");

Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各

种常用类型的putXxx()/ getXxx_r()方法,如:putString()/ getString_r()和putInt()/ getInt_r(),putXxx()用于往

Bundle对象放入数据, getXxx_r()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了

HashMap类型的变量来存放putXxx()方法放入的值:

请求码的作用:

使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为

startActivityForResult()方法传入一个请求码(第二个参数)。请求码的值是根据业务需要由自已设定,用于标识

请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开

新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int

resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做

出相应的业务处理。

结果码的作用:

在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当

这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int

Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据。

Intent是Android一个很重要的类。Intent直译是“意图”,什么是意图呢?比如你想从这个

Activity跳转到另外一个Activity,这就是一个意图。Intent类在Android系统中的作用很大,

在此不详细说了,后面有文章介绍!

Activity跳转,无返回结果

这是最简单的Activity跳转方式。从一个Activity启动另一个Activity,直接

startActivity(new Intent(当前, 下一))。

((Button) findViewById(dv1)).setOnClickListener( new

public void onClick(View v) {

startActivity(new Intent (,

}

});

OnClickListener() {

) );

Activity跳转,返回数据/结果

需要返回数据或结果的,则使用startActivityForResult (Intent intent, int requestCode)

,requestCode的值是自定义的,用于识别跳转的目标Activity。

跳转的目标Activity所要做的就是返回数据/结果,setResult(int resultCode)只返回结果不带

数据,或者setResult(int resultCode, Intent data)两者都返回!

而接收返回的数据/结果的处理函数是onActivityResult(int requestCode, int resultCode, Intent

data),这里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult

里面的resultCode,返回的数据在data里面。

MyAndroidAppActivity:

static final int SEND_SMS_REQUEST = 0;

static final int CALL_REQUEST = 1;

((Button) findViewById()).setOnClickListener( new

OnClickListener() {

 public void onClick(View v) {

 Intent intent = new Intent(,

);

 startActivityForResult(intent, SEND_SMS_REQUEST);

 }

 });



 @Override

 protected void onActivityResult(int requestCode, int resultCode, Intent

data) {

 if (requestCode == SEND_SMS_REQUEST) {

 if (resultCode == RESULT_OK) {

 xt(this, "Send SMS RESULT_OK",

_SHORT).show();

 }else if (resultCode == RESULT_CANCELED) {

 Bundle bundle = ras();

 String phoneno = ing("phoneNO");

 xt(this, "Send SMS RESULT_CANCELED "+phoneno,

_SHORT).show();

 }

 }else if (requestCode == CALL_REQUEST) {

 if (resultCode == RESULT_CANCELED) {