使用Intent传递数据

 我们先重点讲解如何使用Intent在多个Activity之间传递数据,根据前面的介绍我们应该已经清楚,要从Activity1传递数据到Activity2重点是startActivity()和startActivityForResult()两个方法。

  1.无参数Activity跳转

  Intent it = new Intent(Activity1.this, Activity2.class);
  startActivity(it); 

方法1 实现从Activity1直接切换到Activity2.其中  Activity1和Activity2为窗口1和窗口2的类名,注意:这两个Activity一定要在AndroidManifest.xml中注册了才能打开。

 

2.向下一个Activity传递数据(使用Bundle和Intent.putExtras)

     Intent it = new Intent(Activity1.this, Activity2.class);
    Bundle bundle=new Bundle();
    bundle.putString("name", "This is from MainActivity!");
    it.putExtras("bd",bundle);       // it.putExtra(“test”, "shuju”);
    startActivity(it);            // startActivityForResult(it,REQUEST_CODE);

方法2和方法1类似,但是实现了数据传递,注意Bundle对象类似于HashTable,可以存放一个键和对应的对象。而Intent对象也可以以键值对的方式存放bundle对象,从而实现在Activity1和

Acitivty2之间传递数据。在Activity2中可以通过以下方法获得Activity1中传递过来的数据

Intent intent = getIntent();
 Bundle bd = intent.getBundleExtra("bd");// 根据bundle的key得到对应的对象

 String name=bd.getString("name");

3.在Activity2中向上一个Activity返回结果(使用setResult,针对startActivityForResult(it,REQUEST_CODE)启动的Activity)

      Intent intent=getIntent();      
      Bundle bundle2=new Bundle();       
      bundle2.putString("name", "This is from ShowMsg!");      
      intent.putExtras(bundle2);       
      setResult(RESULT_OK, intent);

4.Activity1中如果要根据Activity2中传入的参数进行处理,必须在Activity1中的onActivityResult进行处理
@Override   

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {      
           // TODO Auto-generated method stub     
     super.onActivityResult(requestCode, resultCode, data);   
     if (requestCode==REQUEST_CODE){         
             if(resultCode==RESULT_CANCELED)       
                  setTitle("cancle");          
             else if (resultCode==RESULT_OK) {           
                      String temp=null;              
                       Bundle bundle=data.getExtras();            
      if(bundle!=null)   temp=bundle.getString("name");      
           setTitle(temp);     
       }    
    }  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值