标签:
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(); } |
标签:
原文地址:http://www.cnblogs.com/awkflf11/p/4613609.html