你的分享就是我们的动力 ---﹥

安卓企业开发(3) activity的四种经典传值方法

安卓企业开发(三) activity的四种经典传值方法

              


                   开发中遇到多个activity的传值问题 相邻两个之间的传值 或者多个三个以上之间的传值问题 但是很多同学这方面经验还是不足,说下常用的开发场景


       1 一般的注册或者添加某项信息界面就会遇activity传值问题 

        2  比如我在一个界面提交新息  需要打开一个新的界面选择里面的信息回到当前activty的时候 




          现在说下比较经典的四种比较经典的传值方法


   一 如果是两个相邻activity之间的传值:

     可以用Intent传值 对象和单个属性都可以都可以

  

  1. Intent intent =new Intent(AActivity.this,bActivty.class);//  
  2.    
  3.                   
  4.                // 可以这样
  5.                 intent.putExtra("name", "sss"); 
  6.                intent.putExtra("age", 22); 
  7.               
  8.                 // 也可以直接用bundle放对象
  9.                 Bundle bundle =new Bundle();  
  10.                 bundle.putString("name""ss");  
  11.                 bundle.putInt("age"22);  
  12.                 intent.putExtras(bundle);  
    
二:相邻两个以上的activty之间的传值

    可以照搬方法一 但是比较笨拙 界面一多初学者就会晕了
    首先可以自定义个Application


<pre name="code" class="java"><pre name="code" class="java">public class MyApplication extends Application{
	
	
	public static User user=null;


}




  定义你需要传递的对象或者属性 在A中拿到user 去实例化赋值 然后再除了A的任何一个Activity中去取值使用 如果你的信息比较多 需要每个界面添加不同的信心个这个对象USER 你可以拿到这个user不断去set属性值 到你最后一个界面使用的时候去取值使用就ok ,是不是挺方便》
  
  这种思维也可以拓展为 数据库 网络服务器  或者xml 进行中转 如果只是临时不是持久储存就不必用这种方法了

三 如果是A 界面调到B界面 拿到user的name或者age 需要回到当前A的情况下

   1 在A 中使用 
   startActivityForResult(intent,code); code是返回码数 int
  此方法跳到B 

  2  B可以使用finsh之前 将user或者某个属性扔给A 
  3 A使用 onActivityResult方法接受此intent
  1. @Override  
  2.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  3.         // TODO Auto-generated method stub  
  4.          user.setName(data.getStringExtra("name"))
  5.         Toast.makeText(this, data.getStringExtra("name"), 1).show();//得到返回的user 此name只是一个key 
  6.         super.onActivityResult(requestCode, resultCode, data);  
  7.     }  
  

四 使用回调 


  大致步骤
  在B中的定义一个回调接口 A中去实现这个接口原型 B中去将你需要传的值(例如name)放到接口了 B中执行此接口方法就OK 这样A 就拿到了user了 
回调的功能不值这一点哦啊  可以在任何类里使用回调哦啊 方法二也适用与任何类
回调具体请看
 
http://blog.csdn.net/sk719887916/article/details/40543483  回调详解