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) {


发布评论