有时候会遇到一个很重要的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();
intent.putExtras(bundle); setResult(Activity.RESULT_OKbundle.putString("test", "test content");