Fragment中调用startActivityForResult()返回值的实现

本文记录了在Fragment中使用startActivityForResult()获取返回值时遇到的问题及解决方案,包括正确调用方法,传入getActivity()作为context,以及注意父Activity中必须重写onActivityResult方法以避免回调被拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fragment中调用startActivityForResult()返回值,出现了各种问题,终于成功,记录如下:

一、Fragment中的调用方法,Intent中context参数为getActivity(), 注意startActivityForResult()的前面为空

<span style="font-size:18px;">        <span style="font-size:14px;">Intent intent = new Intent(getActivity(), TenderActivity.class);
         startActivityForResult(intent, 1000);</span></span>

二、被调用的Activity的结束方法

<span style="font-size:18px;">        @Override
	public void onBackPressed() {
		Intent intent = new Intent();
		setResult(RESULT_OK, intent);
		finish();
	}</span>

三、Fragment中重写onActivityResult(),注意super


<span style="font-size:18px;">        @Override
	public void onActivityResult(int requestCode, int resultCode, Intent data){
		
		super.onActivityResult(requestCode, resultCode, data);  //这个super可不能落下,否则可能回调不了
		
		switch(requestCode){
		case 1000:
			if(resultCode == getActivity().RESULT_OK){				
				Logg.d("TAG", "收到返回值了收到了了子了了了了了了子了了了了了了了");
			}
			break;
		case 1:
			if(resultCode == getActivity().RESULT_OK){
				Logg.d("TAG", "收到返回值了收到了了子了了了了了了子了了了了了了了");
			}
			break;
		}
	}</span>


四、 注意fragment的父activity中是否重写了onActivityResult方法,回调是要先经过父activity中的onActivityResult方法的,不要被它吃掉

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值