码迷,mamicode.com
首页 > 其他好文 > 详细

转-Activity之间数据传递之Intent数据传递

时间:2015-07-01 17:28:05      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

Intent意图 可用于Activity之间的数据传递,一般可分为下面两种情况,从当前Activity传递到目标Activity后有无返回值: 1.传递后无返回值的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
   在起始Activity中,发送数据
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);
          Intent intent = new Intent();
         //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
         intent.setClass(ThisActivity.this,TargetActivity.class);
         //绑定数据
         intent.putExtra("username",username);//也可以绑定数组
         intent.putExtra("userpass",userpass);
         //打开目标Activity
         startActivity(intent);
      }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
        //读取数据
        String name = intent.getStringExtra("username");
        String pass = intent.getStringExtra("userpass);
     }
也可以适用Bundle(捆)
    在起始Activity中,发送数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);     
         Intent intent = new Intent();
         //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
         intent.setClass(ThisActivity.this,TargetActivity.class);
         //一次绑定多个数据
        Bundle bundle = new Bundle();
        bundle.putString("username",username);
         bundle.putString("userpass",userpass);
         intent.putExtras(bundle);
        //打开目标Activity
        startActivity(intent);
     }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
         //读取数据
          Bundle bundle = intent.getExtras();
         String name = bundle.getString("username");
         String pass = bundle.getString("userpass");
     }

2. 传递后有返回值的情况:当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用 startActivityForResult (Intent intent, int requestCode);方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
   在起始Activity中,发送数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.thisactivity);     
         Intent intent = new Intent();
        //设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
        intent.setClass(ThisActivity.this,TargetActivity.class);
        //绑定数据
        intent.putExtra("username",username);//也可以绑定数组
        intent.putExtra("userpass",userpass);
        //打开目标Activity
         startActivityForResult(intent,1);
     }
     //需要重写onActivityResult方法
     protected void onActivityResult(int requestCode, int resultCode, Intent intent){
        super.onActivityResult(requestCode,resultCode,intent);
         //判断结果码是否与回传的结果码相同
        if(resultCode == 1){
           //获取回传数据
           String name = intent.getStringExtra("name");
            String pass = intent.getStringExtra("pass);
            //对数据进行操作
           ......
         }
    在目标Activity中,接收数据:
     protected void onCreate(Bundle saveInstanceState){
         super.onCreate(saveInstanceState);
         setContentView(R.layout.targetactivity);     
         //获得意图
         Intent intent = getIntent();
         //读取数据
         String name = intent.getStringExtra("username");
         String pass = intent.getStringExtra("userpass);
         //从EditText中获取新的数据给name和pass
         name = editText1.getText().toString();
         pass = editText2.getText().toString()
         //数据发生改变,需要把改变后的值传递回原来的Activity
         intent.putExtra("name",name);
        intent.putExtra("pass",pass);
        //setResult(int resultCode,Intent intent)方法
        setResult(1,intent);
        //销毁此Activity,摧毁此Activity后将自动回到上一个Activity
        finish();
}

转-Activity之间数据传递之Intent数据传递

标签:

原文地址:http://www.cnblogs.com/awkflf11/p/4613609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!