startActivityForResult()
之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据。
1.介绍几个主要的方法:
1 MainActivity.this.startActivityForResult(intent1, 1);
第一个参数intent1就不介绍了,第二个参数的值必须要大于等于0,你可以自己设定数值,该值是用来标记你要跳转并返回值的Activity。比如这里我设定的是以就是说明A.Activity跳转到B.Activity的标记为1,若A.Activity跳转到C.Activity
那就不能再设定为1了,可以写除了1意外的所有正整数。
2.onActivityResult(int
requestCode, int
resultCode, Intent data)
这个方法是返回主activity自动执行的
1 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
2 super.onActivityResult(requestCode, resultCode, data);
3 switch (requestCode) {
4 case 1:
5 Toast.makeText(MainActivity.this,
6 "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
7 Toast.LENGTH_LONG).show();
8
9 break;
10 case 2:
11 Toast.makeText(MainActivity.this,
12 "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
13 Toast.LENGTH_LONG).show();
14
15 break;
16
17 }
18
19 }
这个方法就是用来处理从哪张Activity返回的,并处理返回来数据。
requestCode:就是之前在主界面的.startActivityForResult的第二个参数值,通过判断requestCode就可以知道是哪张页面返回回来的
resultCode: 根据它来判断返回页面所需要的不同操作
Intent : 就是从子页面返回回来的Intent
3.setResult(resultCode, data)
1 setResult(1, intent1)
这里的1就对应到onActivityResult()方法中的resultCode
intent1 对应onActivityResult()方法中的data, 也就是要返回主Activity所需要处理的Intent
4.主要的方法介绍完以后就介绍下源代码:
MainActivity:
1 public class MainActivity extends Activity implements OnClickListener {
2
3 private Button btn1;
4 private Button btn2;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_main);
10 btn1 = (Button) findViewById(R.id.btn1);
11 btn1.setOnClickListener(this);
12 btn2 = (Button) findViewById(R.id.btn2);
13 btn2.setOnClickListener(this);
14 }
15
16 @Override
17 public boolean onCreateOptionsMenu(Menu menu) {
18 getMenuInflater().inflate(R.menu.main, menu);
19 return true;
20 }
21
22 @Override
23 public void onClick(View v) {
24 switch (v.getId()) {
25 case R.id.btn1:
26 Intent intent1 = new Intent();
27 intent1.setClass(MainActivity.this, OneActivity.class);
28 MainActivity.this.startActivityForResult(intent1, 1);
29 break;
30 case R.id.btn2:
31 Intent intent2 = new Intent();
32 intent2.setClass(MainActivity.this, TwoActivity.class);
33 MainActivity.this.startActivityForResult(intent2, 2);
34
35 break;
36
37 }
38
39 }
40
41 @Override
42 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
43 super.onActivityResult(requestCode, resultCode, data);
44 switch (requestCode) {
45 case 1:
46 Toast.makeText(MainActivity.this,
47 "这是从第一个activity返回的数据---->>" + data.getStringExtra("text"),
48 Toast.LENGTH_LONG).show();
49
50 break;
51 case 2:
52 Toast.makeText(MainActivity.this,
53 "这是从第二个activity返回的数据---->>" + data.getStringExtra("text"),
54 Toast.LENGTH_LONG).show();
55
56 break;
57
58 }
59
60 }
61
62 }
MainActivity.java
OneActivity:
1 public class OneActivity extends Activity {
2
3 private EditText edit;
4 private Button submit;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.activity_one);
10 edit = (EditText) findViewById(R.id.editOne);
11 submit = (Button) findViewById(R.id.btnSubmitOne);
12 submit.setOnClickListener(new Button.OnClickListener() {
13
14 @Override
15 public void onClick(View v) {
16
17 Intent intent1 = new Intent();
18 intent1.putExtra("text", edit.getText().toString().trim());
19 OneActivity.this.setResult(1, intent1);
20
21 OneActivity.this.finish();
22 }
23 });
24
25 }
26
27 @Override
28 public boolean onCreateOptionsMenu(Menu menu) {
29 getMenuInflater().inflate(R.menu.one, menu);
30 return true;
31 }
32
33 }
OneActivity.java
TwoActivity:
1 private EditText edit;
2 private Button submit;
3
4 @Override
5 protected void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.activity_two);
8 edit = (EditText) findViewById(R.id.editTwo);
9 submit = (Button) findViewById(R.id.btnSubmitTwo);
10 submit.setOnClickListener(new Button.OnClickListener() {
11
12 @Override
13 public void onClick(View v) {
14 Intent intent1 = new Intent();
15 intent1.putExtra("text", edit.getText().toString().trim());
16 TwoActivity.this.setResult(2, intent1);
17 TwoActivity.this.finish();
18 }
19 });
20
21 }
22
23 @Override
24 public boolean onCreateOptionsMenu(Menu menu) {
25 // Inflate the menu; this adds items to the action bar if it is present.
26 getMenuInflater().inflate(R.menu.two, menu);
27 return true;
28 }
29
30 }
TwoActivity.java
对应的XML文件就不贴出来了,子页面就一个EditText 和 Button
源码下载:源码
android Intent的startActivityForResult()方法,布布扣,bubuko.com
时间: 2024-08-08 09:42:11