可视化的知识便于复习和查找(注:笔记以学习《androi第一行代码》这本书为基础)
什么是Intent?Intent在Android中的核心作用就是“跳转”(Android中的跳转机制),同时可以携带必要的信息,将Intent作为一个信息桥梁。最熟悉的莫过于从一个活动跳转到另一个活动,然后返回到上一个活动。不过Intent的“跳转”作用不仅于此,Intent还可以在其他地方使用,比如在碎片中跳转,接受到一个广播后自动跳转,但是这个时候没有活动(上下文)作为第一个参数该怎么办?问题早已解决。使用隐式跳转即可,他只需要一个参数,下面会提到隐式跳转,这就是有了显式跳转之后,隐式跳转还能存在的一个理由吧。
接才来进入正题,学习使用Intent类和相关的API:
1)显示跳转到下一个活动。
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); //startActivity方法
2)隐式跳转到下一个活动:需要下一个活动提供“匹配接口”Intentfilter。就相当于口令,一个人发出一条口令,另一个人对上了说明是自己人。
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http"/> </intent-filter>
Intent intent2 = new Intent("com.example.lenovo.component_activity"); intent2.addCategory("com.example.lenovo.component_activity.MY_CATEGORY"); startActivity(intent2);
Intent intent3 = new Intent(Intent.ACTION_VIEW); intent3.setData(Uri.parse("http://www.baidu.com"));//tel:10086 startActivity(intent3);
Intent.ACTION_VIEW //android.intent.action.VIEW
Intent.ACTION_DIAL
com.example.lenovo.component_activity.ACTION_START
3)传递数据
上一个活动向下一个活动传递数据
intent.putExtra("extra_data", "dafadfadfa"); //键值对 下一个活动提取数据
intent = getIntent(); String data = intent.getStringExtra("extra_data"); //通过键提取数据
getIntExtra(String key, int defaultInt);
getBooleanExtra(String key, boolean defaultBoolean);
getCharExtra(String key, char defaultChar);
4)返回数据给上一个活动
上一个活动发出请求
startActivityForResult(intent, 1); //请求码
下一个活动返回数据
Intent intent = new Intent(); intent.putExtra("data_return", "Hello MainActivity"); setResult(RESULT_OK, intent); finish();
上一个活动接受信息
//重写onActiviResult方法 @Override protected void onActivityResult(int requstCode, int resultCode, Intent data){ switch (requstCode){ //请求码 case 1: if(RESULT_OK == requstCode){ //处理结果码 RESULT_CANCELED String returnResult = data.getStringExtra("data_return"); } break; default: } }