Activity之间跳转要使用Intent类来传递数据。实例化Intent对象后,可以设置跳转到的Activity,不传递任何数据,也可以通过Intent封装数据传递。

Intent有六个构造方法,可自行选择,常用的有Intent(action)、Intent(Context,Class<?>)和空参数构造。

可以直接使用startActivity(intent)和startActivityForResult(intent,int requestCode)进行跳转,requestCode须不小于0。

也可以封装好数据后再跳转。要封装数据,可直接使用Intent类的方法putExtra(String key, value),类似于Map;也可先封装Bundle对象,再调用putExtras(bundle)封装。

在目标Activity中可以使用getIntent()方法获得Intent对象,再通过intent.getXXXExtra(key)得到对应的值或getExtras()得到Bundle对象,再提取出值即可。

如使用第二种跳转方式,可在目标Activity中调用setResult(int resultCode,intent)方法,该Activity结束后会回到第一个Activity。一般自己调用finish()方法结束自己。返回后会直接回调onActivityResult(requestCode, resultCode, intent)方法,通过code来验证Activity,通过intent传值。

使用startActivityForResult跳转返回后,不管在目标Activity中使用getIntent()方法还是重新new Intent对象返回,requestCode和resultCode对于两个Activity都是唯一的,确定的一一对应。

下面贴出一些代码:

第一个Activity主要代码:

=(EditText)findViewById(R.id.);=(Button)findViewById(R.id.);.setOnClickListener(View.OnClickListener(){onClick(Viewview){Intentintent=Intent(MainActivity.,Main2Activity.);intent.putExtra(,.getText().toString());startActivityForResult(intent,);}});}onActivityResult(requestCode,resultCode,Intentdata){.onActivityResult(requestCode,resultCode,data);(requestCode==){

//if(resultCode==0x002){Toast.(,data.getStringExtra(),Toast.).show();}Log.(,);}


目标Activity主要代码:

=(EditText)findViewById(R.id.);=(Button)findViewById(R.id.);Stringstr=getIntent().getStringExtra();.setText(str);Stringstr2=str+;.setOnClickListener(View.OnClickListener(){onClick(Viewview){Intentintent=Intent(Main2Activity.,MainActivity.);intent.putExtra(,);setResult(,intent);finish();}});

如有错误之处,欢迎指正。