使用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)。
时间: 2024-09-27 23:36:25