1.使用Intent进行Activity之间的切换(Intent 是Activity之间的信使,两个Activity间的跳转,数据的传输都是通过Intent来实现)
在两个Activity: A——>B跳转
在Activity中使用Intent进行跳转
Intent intent= new Intent();
intent.setClass(A.this,B.class); 或者使用 intent.setClass(getApplicationContext(),B.class);
startActivity(intent);
当然,在实现两个Activity之间跳转之前,记得在AndroidManifest.xml 程序清单文件中,注册A,B Activity
2.两个Activity之间带有返回值的跳转
先是A——>B传输数据
在A中:
Intent intent=new intent(A.this, B.class);
intent.putExtras("name","wqe”); //在Intent中加入键值对数据。键:名, 值:wqe
startActivity(intent);
在B中
Bundle extras=getIntent().getExtras(); // A中通过一个Intent对象传值给B,B中要获取A传过来的值就得先获取用于在A,B间传值的Intent 对象
if(extras!=null)
{
String data=extras.getString("name");
}
3.B-------->A传输数据
这个过程是:A--->B(A跳转到B),B----->A(B传值给A),A获取B传过来的值
在A中startActivityForResult(intent,REQUEST_CODE) ,启动Intent对象跳转到B,当B运行结束时,覆写onActivityResult()回调函数,接受B中传回的数据;在B中要传数据给A,实现了setResult(RESULT_CODE,mIntent),传值给A
在A中:
final static int REQUEST_CODE=0;
Intent intent=new Intent(A.this,B.class);
startActivityForResult(intent,REQUEST_CODE); //A启动Intent对象跳转到B,并从B中获取B传回来的值,REQUEST_CODE只是个int类型的请求标记,值可以随便设
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
.......
Bundle extras=data.getExtras() ;
.........
}
//onActivityResult() 方法是B运行结束以后,也就是B传值给A以后的回调函数,它的参数 Intent data就是B传值给A使用的Intent对象
使用这个对象就可以接受B向A传过来的数据
在B中:
B需要填充数据传给A
Bundle bundle=new Bundle();
bundle.putString("名1","值1");
Intent mInten=new Intent(); //这里B中建立一个Intent对象mIntent,用于向A传输数据
mIntent.putExtras(bundle);
setResult(RESULT_OK,mIntent);
finish(); //B结束时,才会回调A中的onActivityResult(int requestCode,int resultCode,Intent data)方法,所以不要忘了最后加finish()
两个Activity之间跳转,之前我一直困惑,为什么从A--->B Intent对象要初始化跳转的源和目的即: Intent intent=new Intent(A.this,B.class);
而在B----->A传数值的时候Intent 对象不用设置源和目的即:Intent intent=new Intent(); 原来使用了堆栈。
?