Android Intent信使使用

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();
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值