activity间的传参

Intent有两个作用:激活组件和附带数据

激活另一个activity的方法
显示意图:
  1.  Intent intent = new Intent();
       
intent.setClass(this, OtherActivity.class);//设置要激活的组件
       startActivity(intent);

   2. 
Intent intent = new Intent();
      intent.setClassName(this, "com.example.activity.OtherActivity");//通过反射机制直接得到,包+activity.
       startActivity(intent);
 
   3.
 Intent intent = new Intent();
       
intent.setComponent(new ComponentName(this, OtherActivity.class));  //设置组件
       
startActivity(intent);

   4.
Intent intent = new Intent(this,OtherActivity.class);
       startActivity(intent);

     5.   /**
    * 跨应用激活activity,其他应用的包,包加应用的全称,需要其他应用给出权限
* intent.setClassName("com.example.activity", "com.example.activity.OtherActivity");
 */

如果不是action.Main,则需要主动申明Android:exported="true",允许外部访问


附带数据
   在mainActivity中 
 1.      Intent intent = new Intent();
      
 intent.setClass(this, OtherActivity.class);

       intent.putExtra("name", "姓名");
       intent.putExtra("age",5);      
       startActivity(intent);
    在otherActivity中 提取数据
       
Intent intent = getIntent();
       String name = intent.getStringExtra("name");
       int age = intent.getIntExtra("age", 0);//0是缺省值
     
   2.bundle对象存放数据
    
  Intent intent = new Intent();
      
intent.setClass(this, OtherActivity.class);
// 批量添加
Bundle budle = new Bundle();
budle.putString("name", "姓名");
budle.putInt("age", 5);
intent.putExtras(budle);
        startActivity(intent);
    otherActivity不用改,也可以采用另一种做法
         
 Bundle bundle = intent.getExtras();
String name=bundle.getString("name");
int age =bundle.getInt("age");


需要otherActivity返回结果给Mainactivity
     这种需求需要我们改变打开的方式

     把
startActivity(intent)改成
         startActivityForResult(intent, 200);//200是请求码,用于区分哪部分调用
   再重写
onActivityResult方法 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = data.getStringExtra("result");
Toast.makeText(getApplicationContext(),result, 1).show();
}
 

  我们可以在关闭otherActivity时返回结果,也可以定义一个按钮关闭otherActivity返回参数
           
public void closeActiviity(){
Intent data = new Intent();
data.putExtra("result", "xxxdja");
setResult(30, data);//设置返回数据,30是返回码
this.finish();//关闭当前activity
}
 
posted @ 2013-07-01 15:33  说好范特西  阅读(335)  评论(0编辑  收藏  举报