你的位置:首页 > 操作系统

[操作系统]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       @Override10       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       @Override13       public void onClick(View arg0) {14         // TODO Auto-generated method stub15         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)。