Android Intent信使使用
2017-04-20 19:30
253 查看
Intent:(启动activity,启动service,发送广播都可以传输数据)
1:启动Activity
2:启动service
3:停止service:
4:启动sms
5:发送广播,传递数据
6:销毁滞留广播.
7:startActivity()—–传递ContactInfo
ContactsActivity启动DetailsActivity并传递数据:
DetailsActivity接收来自ContactsActivity数据:
8:startActivity()—–传递Student和opType:可以对比第9个
MainActivity发送:
StudentOPActivity接收:
9:startActivityForResult()和setResult()配合使用—在MainActivity中startActivityForResult()跳转到ProductFormActivity,并重写
onActivityResult()方法,用来接收ProductFormActivity回传的数据,在ProductFormActivity中的btnClicked方
法中只要setResult()后finish()自己即可.可以对比第8个
MainActivity中发送:
ProductFormActivity中接收:
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(); }
相关文章推荐
- Android中级教程(二)之调用另一个Activity---Intent对象的使用!
- Android的intent:基础概念以及显示/隐式使用Intent && 通过intent返回结果
- Android Intent使用
- android intent使用方法
- Android 使用Intent启动常用的应用与服务(转)
- Android Intent 使用整理
- android Intent 使用 小记
- Android桌面快捷方式图标生成与删除,使用Intent与launcher交互
- Android Intent 使用整理
- Android Intent的几种使用用法
- Android Intent 使用整理
- Android 系统应用调用,intent的使用总结
- Android Intent使用
- android的intent使用方法
- Android 系统应用调用,intent的使用
- Android Intent 使用整理
- Android使用Intent Filter来响应隐式Intent
- android 中Intent 使用
- android的intent使用方法
- Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解