Intent:(启动activity,启动service,发送广播都可以传输数据)
1:启动Activity
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
2:启动service
Intent intent = new Intent(this, MusicService.class);
intent.putExtra("path", m.getMusicPath());
startService(intent);
3:停止service:
Intent intent = new Intent("com.tarena.action.MY_SERVICE");
stopService(intent);
intent = new Intent(this, MusicPlayService.class);
stopService(intent);
4:启动sms
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:5556"));
5:发送广播,传递数据
Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.parse("file://" + Environment.getExternalStorageState()));
sendBroadcast(intent);
6:销毁滞留广播.
Intent intent = new Intent("com.tarena.action.STICKY_BROADCAST");
removeStickyBroadcast(intent);
7:startActivity()—–传递ContactInfo
ContactsActivity启动DetailsActivity并传递数据:
Intent intent = new Intent(Day20_03_ContactsActivity.this,DetailsActivity.class);
intent.putExtra("contact", adapter.getItem(position));// 传递数据,具体联系人.
startActivity(intent);
DetailsActivity接收来自ContactsActivity数据:
ContactInfo contact = (ContactInfo) getIntent().getSerializableExtra("contact");
// 显示头像
if (contact != null) {
Bitmap bm = biz.getPhoto(contact.getId());
if (bm != null)
ivPhoto.setImageBitmap(bm);
else
ivPhoto.setImageResource(R.drawable.ic_launcher);
//显示姓名和号码和邮箱信息.
tvName.setText(contact.getName());
tvInfo.setText(contact.toString());
}
8:startActivity()—–传递Student和opType:可以对比第9个
MainActivity发送:
//点击修改按钮
Intent intent = new Intent(this, StudentOPActivity.class);
intent.putExtra(GolbalUtils.EXTRA_OP_TYPE,GolbalUtils.OP_TYPE_UPDATE);
intent.putExtra(GolbalUtils.EXTRA_OP_DATA, stu);
startActivity(intent);
//点击添加按钮
Intent intent = new Intent(this, StudentOPActivity.class);
intent.putExtra(GolbalUtils.EXTRA_OP_TYPE, GolbalUtils.OP_TYPE_ADD);
startActivity(intent);
StudentOPActivity接收:
//setupView()方法中
opType = getIntent().getIntExtra(GolbalUtils.EXTRA_OP_TYPE,GolbalUtils.OP_TYPE_ADD);
switch (opType) {
case GolbalUtils.OP_TYPE_ADD:
btnOP.setText("添加");
break;
case GolbalUtils.OP_TYPE_UPDATE:
btnOP.setText("修改");
Student stu = (Student) getIntent().getSerializableExtra(GolbalUtils.EXTRA_OP_DATA);
if (stu != null) {
etId.setText(stu.getId() + "");
etName.setText(stu.getName());
}
break;
}
//doClick(View v)方法中
public void doClick(View v) {
Student stu = new Student();
stu.setName(etName.getText().toString());
stu.setAge(Integer.parseInt(etAge.getText().toString()));
stu.setSex(rgSex.getCheckedRadioButtonId() == R.id.rdoMale ? "男" : "女");
//直接操作数据库
switch (opType) {
case GolbalUtils.OP_TYPE_ADD:
biz.addStudent(stu);
break;
case GolbalUtils.OP_TYPE_UPDATE:
stu.setId(Integer.parseInt(etId.getText().toString()));
biz.updateStudent(stu);
break;
}
finish();
}
9:startActivityForResult()和setResult()配合使用—在MainActivity中startActivityForResult()跳转到ProductFormActivity,并重写
onActivityResult()方法,用来接收ProductFormActivity回传的数据,在ProductFormActivity中的btnClicked方
法中只要setResult()后finish()自己即可.可以对比第8个
MainActivity中发送:
//点击添加按钮
Intent intent = new Intent(this, ProductFormActivity.class);
intent.putExtra(Constants.EXTRA_KEY_FORM_TYPE,Constants.FORM_TYPE_ADD);
startActivityForResult(intent,Constants.FORM_TYPE_ADD);
//点击编辑按钮
Intent intent = new Intent(this, ProductFormActivity.class);
intent.putExtra(Constants.EXTRA_KEY_FORM_TYPE,Constants.FORM_TYPE_EDIT);
intent.putExtra(Constants.EXTRA_KEY_PRODUCT, (Product) this.adapter.getItem(i));
startActivityForResult(intent, Constants.FORM_TYPE_EDIT);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "您取消了操作", Toast.LENGTH_SHORT).show();
return;
}
// 接收ProductFormActivity中btnClicked()方法中返回的结果product信息
Product m = (Product) data.getSerializableExtra(Constants.EXTRA_KEY_PRODUCT);
// 判断请求码是添加还是修改,在这里操作数据库
switch (requestCode) {
case Constants.FORM_TYPE_ADD: {
this.productService.add(m);// 完成添加
}
break;
case Constants.FORM_TYPE_EDIT: {
this.productService.update(m);// 完成更改
}
break;
}
}
ProductFormActivity中接收:
//setViews()方法中
Intent intent = getIntent();
int type = intent.getIntExtra(Constants.EXTRA_KEY_FORM_TYPE,-1);
switch (type) {
case Constants.FORM_TYPE_ADD: {
btn1.setText("添加");
}
break;
case Constants.FORM_TYPE_EDIT: {
btn1.setText("修改");
Product m = (Product) intent.getSerializableExtra(Constants.EXTRA_KEY_PRODUCT);
etId.setText(String.valueOf(m.getId()));
etName.setText(m.getName());
etPrice.setText(String.valueOf(m.getPrice()));
}
public void btnClicked(View view) {
switch (view.getId()) {
case R.id.btn1: {
// 用户输入内容包装为Product
Product m = new Product();
m.setId(Integer.parseInt(etId.getText().toString()));
m.setName(etName.getText().toString());
m.setPrice(Double.parseDouble(etPrice.getText().toString()));
// 在Intent中绑定Music对象,向上一窗口回传,注意intent没有启动的具体activity
Intent intent = new Intent();
intent.putExtra(Constants.EXTRA_KEY_PRODUCT, m);
// 设置回传的数据,会将数据Product自动返回MainActivity里,参数: 结果码, 数据
setResult(RESULT_OK, intent);// 结果码设置为OK
}
break;
case R.id.btn2: {
setResult(RESULT_CANCELED);// 结果码设置为CANCELED
}
break;
}
finish();
}