Intent, 直译为意图, 也就是你想要做什么或想要去哪?
Intent是Activity, Service和BroadcastReceiver这三个应用组件之间进行通信的信使
用到一些API
Activity: 活动
startActivity(Intent intent): 一般启动Activity
startActivityForResult(int reqCode, Intent intent): 带回调启动Activity
onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
setResult(int resultCode, Intent data): 设置要返回的结果
finish(): 结束当前Activity
getIntent(): 得到启动Activity的意图
sendBroadcast(Intent intent): 发送广播
startService(intent): 启动服务
Intent: 意图
Intent(Context packageContext, Class<?> cls) : 用于创建显示意图对象
Intent(String action): 用于创建隐式意图对象
putExtra(String name, Xxx value): 保存额外数据
Xxx getXxxExtra(String name): 获取额外数据
setData(Uri data): 设置有特定格式的uri数据
1.正向传值
1》传递方(MainActivity.java)
创建一个Bundle对象,通过Bundle对象设置数据
注意:Bundle里面维护了一个hashMap
方式一:
Intent intent=new Intent(this,SecondActivity.class);
Bundle bundle=new bundle();//创建Bundle对象
//为对象赋值
bundle.punInt("age", 12);
bundle.putString("name","哈哈");
intent.putExtras(bundle);
startActivity(intent);
方式二:
Intent intent=new Intent(this,SecondActivity.class);
intent.putExtra("name","哈哈");
startActivity(intent);
2》接受方(SecondActivity.java)
通过getIntent方法获取intent对象,再通过
getXXExtra(键);获取值即可
Intent intent=getIntent(); //获取intent对象 不要new 重新创建
intent.getStringExtra("name"); //getXXExtra(键名)要与传地方一致
2.回调传值
1》传递方
启动Activity时,需要startActivityForResult
重写回调方法onActiviyResult,接受回传来的数据
public void huidiaochuanzhi(View view){
Intent intent = new Intent(this,ThirdActivity.class);
//要回传结果的跳转
/*
* 参数1:意图对象
* 参数2:请求码,自定义int值
*
*/
startActivityForResult(intent, 1);
}
/**
* 此方法为回调方法
*
* 作用: 挡有Activity回传数据过来,系统自动调用此方法
*
* 参数1:请求码
* 参数2:结果码
* 参数3:意图对象
*
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (intent!=null) {
String message = intent.getStringExtra("message");
Toast.makeText(this, message, 0).show();
}
}
2》接受方(ThirdActivity.java)
通过getIntent获取意图对象,然后设置携带数据
再通过setResult()设置结果
//1.获取intent对象
intent = getIntent();
//2.为intent设置携带数据
intent.putExtra( "message", "haha");
//3.设置成回调结果
/*
* 参数1:结果码
* 参数2:意图对象
*/
setResult(100, intent);
//关闭当前界面
finish();
Android正向传值和回调传值
最新推荐文章于 2021-05-28 23:54:31 发布