标签:
基本用法:
显式
Intent intent=new Intent(Activity甲.this,Activity乙.class); startActivity(intent);
传递参数
Intent intent=new Intent(Activity甲.this,Activity乙.class);
intent.putExtra("参数名","要传的价值,可以是任何类型");
startActivity(intent);
获取参数
在目标Activity中
Intent intent=getIntent();
String data=intent.getStringExtra("参数名");
进阶:
除了startActivity方法外,还可以使用startActivityForResult方法,感觉类似于观察者模式
startActivityForResult方法第一个参数还是intent实例,第二个参数为自定义的requestCode代码,定以后可以在Activity乙返回时(按按钮或Back键)作相对应的操作。
需重写Activity甲中的onActivityResult函数
在Activity甲中
Intent intent=new Intent(Activity甲.this,Activity.乙.class); startActivityForResult(intent,1);
在Activity乙中通过按钮返回Activity甲
Button btnBack=(Button)findViewById(R.id.btnBack);
btnBack.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Intent intent=new Intent();
setResult(RESULT_OK,intent);
finish();
}
});
在Activity乙中通过返回按钮Back(机器上的)返回Activity甲
需重写onBackPressed函数
@Override
public void onBackPressed(){
Intent intent=new Intent();
intent.putExtra("参数名","值");
setResult(RESULT_OK,intent);
finish();
}
最后在Activity甲中重写onActivityResult函数
@Override
protected void on ActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode=RESULT_OK){
String returnData=data.getStringExtra("参数名");
}
}
}
其中case 1就是在建立intent时所存放的第二个参数,为requestCode
finish
Android使用Intent让不同Activity切换,并传递参数
标签:
原文地址:http://www.cnblogs.com/gachal/p/4300940.html