startActivityForResult的学习记录

我们在使用Intennt进行两个或者多个Activity之间的通信的时候,A->B,A会通过intent传递一些必要的数据给B,但是很多时候,在B结束返回A的时候,我们需要从B获取一下数据回传给A,给A一些反馈,这个时候,简单的startActivity就不能满足我们的需求了。

在TestActivity.java中:

Intent intent = new Intent();
intent.setClass(TestActivity.this, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "zhangsan");
bundle.putInt("age", 21);
intent.putExtras(bundle);
startActivityF(intent);

 在MyAcitivity.java中: 

	TextView text = (TextView)findViewById(R.id.text);
	.......
	Intent intent = getIntent();
	Bundle bundle = intent.getExtras();
	String name = bundle.getString("name");
	int age = bundle.getInt("age");
	text.setText(name + "   " + age);


使用这种方式,只是简单的从第一个Activity传递数据给第二个,但是当第二个结束返回第一个Activity时,却没有办法获取到从第二个Activity返回的数据(很多时候,我们需要从B中返回一些数据来判断在B中的数据是不是正常的执行了,在多个Activity跳转的时候,也可以通过这种方式来确定是从哪个Aitivity中返回,以确定后续的操作该如何进行)。

startActivityForResult:

startActivityForResult(Intent intent , int requestCode);

在TestActivity.java中:

	Intent intent = new Intent();
	intent.setClass(TestActivity.this, MyActivity.class);
	Bundle bundle = new Bundle();
	bundle.putString("name", "zhangsan");
	bundle.putInt("age", 21);
	intent.putExtras(bundle);
	startActivityForResult(intent, 0);

同时,还需要在TestActivity.java中重写

	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		.......
	}

来接收从MyActivity中返回的数据,并进行后续步骤,可以通过对requestCode和从MyActivity中返回的resyltCode来判断返回的来源(拥有多个跳转Activity时,返回不同的resultCode来区分)。

在MyActivity.java中:

数据的接收和使用和startActivity是一样的;

区别是在返回的时候,需要设置一个参数,用来区分于其他的Acitivity:

MyActivity.this.setResult(int resultCode);
MyActivity.this.finish();

这样,在返回TestActivity的时候,就会返回一个数据给源头(当然,这是最简单的返回值)

结束了,我还没有去看返回一些其他类型的数据的时候的时候的情况,暂时写这么多,后续有了我会再补上的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值