一,在一个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()方法被触发.