Intent

一、显式 Intent


Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);

二、隐式 Intent


1. 在<activity>下配置<intent-filter>
<activity android:name=".SecondActivity" >
      <intent-filter>
          <action android:name="com.example.activitytest.ACTION_START" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="com.example.activitytest.MY_CATEGORY" />
      </intent-filter>
</activity>
2. 只有<action>和<category>中的内容 同时 匹配上 Intent 中指定的时,活动才能响应 Intent。
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
  • android.intent.category.DEFAULT 是一种默认的category, 在调用
    startActivity() 方法的时候会自动将这个 category 添加到 Intent 中。
  • 每个 Intent 只能指定一个 action,但能指定多个 category。
3. 更多隐式 Intent 用法。
  • 打开网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
  • 拨打电话
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

三、向下一个活动传递数据


1. FirstActivity 利用 putExtra 暂存在 Intent 中:
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", data);
startActivity(intent);
2. SecondActivity 从 Intent 中取出:
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");

四、返回数据给上一个活动


1. 修改 FirstActivity,1 是请求码,用于在回调中判断数据的来源。
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
2. SecondActivity 中构建一个 Intent 只用于传递数据。setResult() 第一个参数一般为 RESULT_OK 或 RESULT_CANCELED。
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
3. 活动被销毁后会回调上一个活动的 onActivityResult()。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      switch (requestCode) {
          case 1:
              if (resultCode == RESULT_OK) {
                  String returnedData = data.getStringExtra("data_return");
                  Log.d("FirstActivity", returnedData);
              }
              break;
          default:
      }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容