Activity反馈传递参数setResult千能方法

本文介绍了在Android开发中,当ActivityA需要接收多个ActivityB的参数时,如何通过startActivityForResult()传递Class<?>类型数据。同时讨论了在ActivityA设置为singleTask模式时,导致ActivityB无法正常接收结果的问题,并引用了相关文章解释原因及提供解决方案,建议将目标Activity设置为singleTop。
摘要由CSDN通过智能技术生成


    有时候会遇到一个很重要的ActivityA类,很多其他的ActivityB都需要向其传递参数时使用startActivityForResult()来获取结果,但是如果此ActivityB类有很多,那么ActivityA必须能够记住传进来的时候的Activity.class这个东西,不然,你无法知道Intent指向谁。

    需求说明了一下,下面介绍怎么实现。我只大概看了一下Android源码没有发现有记录传进来Activity信息的类,索性按照自己的思路来做吧,挺简单的。首先做一个实验,看是否能够传递Class<?>这个类,结果证明Class<?> cls = (Class<?>) intent.getSerializableExtra("CLS");可以传递。接下来,把这些东西移到一个继承Activity的子类BaseActivity,然后工程中所有的activity类都继承此BaseActivity。

下面是几个关键类的代码:

public class TestActivity extends BaseActivity {
	private static final String TAG = TestActivity.class.getSimpleName();
	private Context mContext = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		mContext = this;
		
		Intent intent1 = getIntent();
		String text = intent1.getStringExtra("TEST");
		Class<?> cls = getResultClass();
		Log.d(TAG, "2.收到参数:" + text + " #" + cls);
		
		if (cls != null) {
	            Intent intent = new Intent(mContext, cls);
	            Bundle bundle = new Bundle();  
                    bundle.putString("test", "test content");
intent.putExtras(bundle); setResult(Activity.RESULT_OK
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值