3. 调用另一个Activity,并两个Activity之间相互传递数据

一,在一个Activity中调用另一个Activity

利用 android.content.Intent 对象实现从一个Activity跳转到另一个Activity

例如:从FirstActivity跳转到SecondActivity

/*           关键代码             */
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

this.startActivity(intent);

//this.finish();          这个函数将结束当前的Activity, 如果不调用的话, 当前Activity只是失去了控制权, 暂时处于onPause状态


二,不同Activity之间的数据传递

利用android.os.Bundle对象封装需要传递的数据

例如:从FirstActivity传递一些数据到SecondActivity

/*           关键代码             */
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

Bundle bundle = new Bundle();

bundle.put***("key",value);    //这里***代表value的类型, 如果value的类型是String, 则该函数为putString; "key"是value的标识, 方便接收的Activity解析。

intent.putExtras(bundle);

this.startActivity(intent);


三,接收Activity解析传递过来的数据

在onCreate函数的开头部分解析Bundle封装的数据

/*           关键代码             */

Bundle bundle = this.getIntent().getExtras();                 //获取bundle

String value = bundle.getString("key");                           //获取key标识的数据


四,启动其他Activity并返回结果

为了获取被启动的Activity返回的结果, 需要做以下两方面的工作

1. 当前Activity需要重写onActivityResult(int requestCode, int resultCode, Intent intent), 当被启动的Activity返回结果时, 该方法将会被触发;

参数说明:

requestCode: 为了知道该方法是由哪个请求的结果所触发的;

resultCode: 为了知道返回的数据来自哪个新的Activity。

2. 被启动的Activity需要调用setResult()方法设置处理结果。

/*                       关键代码                  */

①启动新的Activity:

startActivityForResult(intent, 0);        // 参数0是请求码, 用于标识该请求

②重写当前Activity的onActivityResult()方法, 当被启动的Activity返回结果时, 该方法被调用。

@Override

public void onActivityResult(int requestCode, int resultCode, Intent intent)

{

if(requestCode == 0 && resultCode == 0)   //当requestCode和resultCode同时为0时, 也就是对应上面启动新的Activity的请求码时, 处理有特定的结果

{

Bundle bundle = intent.getExtras();      //取出返回结果Intent中的Extras数据

}

}

③新启动的Activity中返回结果

this.setResult(0, intent);       //0代表调用Activity的请求码, 与前面对应;

                                                  //intent是返回的结果

当被启动的Activity调用setResult()方法时, 调用者的onActivityResult()方法被触发.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值