Acitivity间数据的传递

    使用startActivityForResult方法进行数据传递。

 

     MainActivity.java:

 1 public class MainActivity extends Activity {
 2     Button  btn;
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7         Button btn=(Button)findViewById(R.id.button1);
 8         btn.setOnClickListener(new OnClickListener(){
 9             @Override
10             public void onClick(View arg0) {
11                 Intent intent=new Intent(MainActivity.this,OtherActivity.class);
12                 startActivityForResult(intent,1);    
13             }        
14         });
15             
16         
17     }
18     protected void onActivityResult(int requestCode,int resultCode,Intent data){
19         switch(requestCode){
20         case 1:
21         String result=data.getExtras().getString("result");
22         }
23     }    
24 
25 }

OtherActivity.java:

 1 public class OtherActivity extends Activity {
 2     Button btn2;    
 3     /**
 4      * @param args
 5      */
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_other);
 9         Button btn2=(Button)findViewById(R.id.button2);
10         btn2.setOnClickListener(new OnClickListener(){
11 
12             @Override
13             public void onClick(View arg0) {
14                 // TODO Auto-generated method stub
15                 Intent intent=new Intent();
16                 intent.putExtra("result", "hello world");
17                 OtherActivity.this.setResult(resultcode, intent);
18                 OtherActivity.this.finish();
19             }});
20     }
21 }

        注:

1.请求码requestCode:startActivityForResult(intent,requestCode)和onActivityResult(int requestCode,int resultCode,Intent data)中的requestCode为请求码, 它的作用是用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面 Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出 相应的业务处理。

2.结果码resultCode:在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activi ty的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(Result Activity和NewActivity为要打开的新Activity)。


 
posted @ 2015-09-14 11:09  丶下雨了  阅读(377)  评论(0编辑  收藏  举报