activity之间可以使用intent进行通信
例如在ActivityA和ActivityB之间进行通信,使用intent传递数据
关键函数:
ActivityA:
startActivityForResult(Intent intent, int requestCode) //可将消息添加到intent中,利用intent传递消息
onActivityResult(int requestCode, int resultCode, Intent data)
//获得其它activity返回的消息
//requestCode是startActivityForResult中的requestCode数据
//resultCode是setResult中的resultCode数据
ActivityB:
getIntent(); //获得所传递过来的intent
setResult(int resultCode, Intent data); //将结果传递回ActivityA,一定放在finish函数之前,不然不会有效
示例:
在ActivityA中:
public class ActivityA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Intent intent=new Intent(ActivityA.this,ActivityB.class);
intent.putExtra("msg","hello,i'm ActivityA"); //将消息添加到intent中
this.startActivityForResult(intent,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0:
if (resultCode == Activity.RESULT_OK) {
Bundle bundle=data.getExtras();
String msg=bundle.getString("msg");
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
else if (resultCode == Activity.RESULT_CANCELED) {
}
break;
case 1:
// do something
break;
}
}
}
在ActivityB中:
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String msg=bundle.getString("msg");
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
@Override
public void finish() {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("msg", "ActivityB had received your message");
setResult(Activity.RESULT_OK, intent);
super.finish();
}
}