android Intent的startActivityForResult()方法

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

源码下载:源码

 

 

 

 

posted @ 2014-05-05 00:15  perfect亮  阅读(7801)  评论(0编辑  收藏  举报