继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

android中activity之间数据的传输

米脂
关注TA
已关注
手记 492
粉丝 88
获赞 591

android中传递数据的方式有四种:

 使用Intent来传递数据;

 在Activity之间使用静态变量传递数据;

 通剪切板传递数据 ;

 Intent中使用全局变量来传递数据;


Intent表示意图,很多时候我们都会利用Android的Intent来在各个Activity之间传递数据,这也是Android比较官方的一种数据传递的方式,今天我主要介绍的就是用intent来传送activity之间的数据。


传送模式:activity与activity之间:(这里只做主要方法的分析)


A(储存数据)-------------B(接收数据)

A(接收数据)-------------B(储存数据)


具体代码分析如下:A(储存数据)-------------B(接收数据)

A:

       public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  


  1.        setContentView(R.layout.main);  


  2.         initComponent();  


  3.         button.setOnClickListener(new View.OnClickListener() {  

  4.             @Override  

  5.             public void onClick(View v) {  


  6.                 Intent intent = new Intent(IntentDemo.this, Other.class);   得到intent


  7.                 // 在Intent中传递数据  

  8.                 intent.putExtra("name", "AHuier");     将数据储存进去


  9.                 intent.putExtra("age", 22);  


  10.                 intent.putExtra("address", "XiaMen");  

  11.                 // 启动Intent  


  12.                 startActivity(intent);  

  13.             }  

  14.         });  

  15.     }  


B:

  1. protected void onCreate(Bundle savedInstanceState) {  


  2.         // TODO Auto-generated method stub  


  3.         super.onCreate(savedInstanceState);  


  4.         setContentView(R.layout.other);  


  5.         initComponent();  

  6.   

  7.         Intent intent = getIntent();    得到开启自己activity的intent    获取储存的内容(对面储存的是什么类型,就调用什么类型,切记,比如储存的是int类型,就调用  getint类型。)



  8.         int age = intent.getIntExtra("age", 0);  


  9.         String name = intent.getStringExtra("name");  


  10.         String address = intent.getStringExtra("address");  


  11.   

  12.         textView.setText("My age is " + age + "\n" + "My name is " + name + "\n" + "My address "  

  13.                 + address);  

  14.     }  




具体代码分析如下:A(接收数据)-------------B(储存数据)

A:

  1. public class MainActivity extends Activity  

  2. {  

  3.     private Button mainBtn=null;  

  4.     private final static int REQUEST_CODE=1;  

  5.       

  6.     /** Called when the activity is first created. */  

  7.     @Override  

  8.     public void onCreate(Bundle savedInstanceState)  

  9.     {  

  10.         super.onCreate(savedInstanceState);  

  11.         setContentView(R.layout.main);  

  12.         mainBtn=(Button)findViewById(R.id.mainBtn);  

  13.         mainBtn.setOnClickListener(listener);  

  14.     }  

  15.       

  16.     private OnClickListener listener=new OnClickListener()  

  17.     {  

  18.         @Override  

  19.         public void onClick(View v)  

  20.         {  

  21.             Intent intent=new Intent();  

  22.             intent.setClass(MainActivity.this, SecondActivity.class);  

  23.             intent.putExtra("str", "Intent Demo");  

  24.             startActivityForResult(intent, REQUEST_CODE);  //次方法必须调用,获取开启activity的结果值。第二个参数是请求码,也可以写成数字。

  25.               

  26.         }  

  27.           

  28.     };  

  29.   

  30.     @Override  //然后直接重写这个方法:

  31.     protected void onActivityResult(int requestCode, int resultCode, Intent data)  (参数1:请求码,参数2:结果码,参数3:intent)

  32.     {  

  33. //请求码与结果码的运用?没有下面的if语句的话,我们不知道开启了是拿回哪个activity的结果值,做了个判断

  34.         if (requestCode==REQUEST_CODE)  

  35.         {  

  36.             if (resultCode==SecondActivity.RESULT_CODE)  

  37.             {  

  38.                 Bundle bundle=data.getExtras();  

  39.                 String str=bundle.getString("back");  


  40.                 Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();  

  41.             }  

  42.         }  

  43.     }  

  44.       

  45.       

  46. }  

B:

  1. public class SecondActivity extends Activity  

  2. {  

  3.     public final static int RESULT_CODE=1;  

  4.     private TextView secondTxt;  

  5.     private Button secondBtn;  

  6.       

  7.     @Override  

  8.     protected void onCreate(Bundle savedInstanceState)  

  9.     {  

  10.         super.onCreate(savedInstanceState);  

  11.         setContentView(R.layout.second);  

  12.         Intent intent=getIntent();  

  13.         Bundle bundle=intent.getExtras();  

  14.         String str=bundle.getString("str");  

  15.         secondTxt=(TextView)findViewById(R.id.secondTxt);  

  16.         secondTxt.setText(str);  

  17.           

  18.         secondBtn=(Button)findViewById(R.id.secondBtn);  

  19.         secondBtn.setOnClickListener(listener);  

  20.           

  21.     }  

  22.       

  23.     private OnClickListener listener=new OnClickListener()  

  24.     {  

  25.         @Override  

  26.         public void onClick(View v)  

  27.         {  

  28.             Intent intent=new Intent();  

  29.             intent.putExtra("back", "Back Data");  

  30.             setResult(RESULT_CODE, intent);  

  31.             finish();  

  32.         }  

  33.           

  34.     };  

  35. }  





原文链接:http://www.apkbus.com/blog-846519-61885.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP