Intent

总述

Intent是一个重要的数据结构,它有两个重要的成员变更,一个是action另一个是data。

另外的一些成员变量如category,type,component,extras都不如前两个重要,不过component比较特别一些,Intent可以分成精确和模糊两种类型,划分的依据就是component。

  • category是对action的补充,是对action更进一步的描述。
  • type是对data的补充,显示的指出data的MIME类型,不用再根据数据推测它的MIME类型了。
  • component是组件的名子,也就是intent发送的目的地,有了这个,其它的描述都可以省略>了,因为不需要根据其它的数据来推测intent需要发送的目的地。
  • extras字面意思是其它,在这里的意思也是其它,上面所不包括的,都写在这里。

Intent的应用场景

应用场景一:多个Activity之间切换。Activity A需要切换到Activity B

Intent intent = new Intent();
intent.setAction("android.intent.action.TEST");
startActivity(intent);

应用场景二:父Activity启动一个子Activity,子Activity执行之后返回值给父Activity

public class MyActivity extends Activity {
     ...

     static final int PICK_CONTACT_REQUEST = 0;

     protected boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
             // When the user center presses, let them pick a contact.
             startActivityForResult(
                 new Intent(Intent.ACTION_PICK,
                 new Uri("content://contacts")),
                 PICK_CONTACT_REQUEST);
            return true;
         }
         return false;
     }

     protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == PICK_CONTACT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 // A contact was picked.  Here we will just display it
                 // to the user.
                 startActivity(new Intent(Intent.ACTION_VIEW, data));
             }
         }
     }
 }

应用场景三:直接启动一个Activity

Intent intent = new Intent();
intent.setClass(MainActivity.this, TestResult.class);
startActivity(intent);

或者传递数据给子Activity

Intent intent = new Intent();
intent.setClass(MainActivity.this, TestResult.class);
intent.putExtras("name","real name");
startActivity(intent);

//接收Intent
Intent intent = getIntent();
String name = intent.getStringExtras("name");

应用场景四:传递数据

如果传递的数据结构复杂,或者可以会被多次传递,可以使用bundle

Intent intent = new Intent();
Bundle bl = new Bundle();
bl.putString("test", name);
intent.putExtras(bl);



Intent的主要作用还是activity间切换,对于传递数据,虽然可以使用这个方式,但并不最优的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值