onActivityResult详细理解

  在进行界面跳转的时候,需要获取跳转之后的界面的数据和状态信息,使用onActivityResult可以解决这个问题。

在这里插入图片描述

Intent serverIntent = new Intent(this, DeviceListActivity.class);
startActivityForResult(serverIntent, 1);
这里从A跳转到B,1处设置一个>=0的数据,作为B界面的标记
startActivityForResult(Intent Intent, int requestCode):
该方法要在onCreate中调用,传递的参数有两个,一个是Intent,intent中可以携带传递的数据;另一个是int型的请求码Code,请求码可以自己定义。
请求码的作用:为了区分启动不同的Intent,或者传递不同的数据使用,作为一种不同启动的标识。比如A有两个Button都要启动B,为了区分是哪个Button启动的B,我们就要设置两个不同的请求码来区分。或者2个按钮同时请求2个不同的界面,设置请求码来区分是哪个界面返回的值。

这个方法是启动B的启动方法,调用之后会跳转到界面B,并传递相应的数值。同时,对于具体Intent传递的数值,可以使用接下来讲解的onActivityResult()方法来传递,这样启动方法和数据操作方法分开写,会更好。
下面是一个实例 方便理解
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SettingActivity.class);
startActivityForResult(intent,1); //1请求码1 代表了A界面
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SettingActivity2.class);
startActivityForResult(intent,2); //2请求码2 代表了B界面
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1://A界面返回内容处理
if (resultCode == 1) {
text.setText(data.getStringExtra(“data”));
} break;
case 2://B界面返回内容处理
if (resultCode == 2) {
text.setText(data.getStringExtra(“data2”));
} break;
}
}
界面返回值:
Intent intent = new Intent();
intent.putExtra(“data”, editText.getText().toString());
setResult(1,intent);
finish();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值