Intent是 Android中重要的桥梁之一,它分为显式意图和隐式意图。接下来分别针对这两种意图进行讲解。

  • 显式意图:通过指定一组数据或动作,激活应用内部的 activity;(相比隐式意图,此做法更安全)
Intent intent = new Intent();
intent.setClass(MainActivity.this,Main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
startActivity(intent); //如果没有回调的时候直接这样就OK
或者
Intent intent = new Intent();
intent.setClassName("com.sd.study.test_01","com.sd.study.test_02"); //第一个参数指的就是要跳转的那个Activity的包名;第二个指的是跳到的那个Activity的包名
startActivity(intent);
或者
Intent intent = new Intent(this,Main2Activity.class);//第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
startActivity(intent);

  

  • 隐式意图:通过指定具体的包名和类名,打开另一个程序的 Activity。
//实现跳转的功能
Intent intent = new Intent();
//设置跳转的动作
intent.setAction(" 清单文件中目标activity的name ");
//设置 category
intent.addCategory(" 清单文件中目标activity的category ");
//开启 Activity (如果需要加权限记得加上)
startActivity(intent); //实现拨打电话的功能
Intent intent = new Intent();
//设置拨打的动作
intent.setAction(" 清单文件中目标activity的name");
//设置拨打的数据
intent.setData(Uri.parse("tel:"+119));
//开启 Activity (如果需要加权限记得加上)
startActivity(intent);

  

//清单文件
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Main2Activity"> // " 清单文件中目标activity的name "
// " 清单文件中目标activity的category "
</activity>
</application>

  • Android数据传递与回传
//第一个Activity
public class MainActivity extends Activity {
private Button btn ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
//设置单击事件
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(mainActivity.this,main2Activity.class); //第一个参数指的就是要跳转的那个Activity;第二个指的是跳到的那个Activity
intent.putExtra("str1", "hello world");
intent.putExtra("str2", "你好,世界");
//如果没有回调也不用重写这个方法
startActivityForResult(intent, 1);
}
});
}
} //第二个Activity
public class Main2Activity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.button);
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
//根据"键值对"取值
String str1 = bundle.getString("str1");
String str2 = bundle.getString("str2");
//按钮的点击事件
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("str3", "Back Data");
setResult(0, intent); //设置返回值,参数1用于向上一个活动返回处理结果,参数2把带有数据的intent传递回去。
finish(); //调用这个方法,此Activity关闭,并把它从栈中移除。然后进入到前一个Activity
}
});
}
}
/* 由于我们使用的是startActivityForResult()方法,因此我们需要在第一个Activity中重写onActivityResult()方法 */

//第一个Activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) { // requestCode,即我们在启动活动时传入的请求码;resultCode,即我们在返回数据时传入的处理结果;data,即携带着返回数据的Intent。
switch (requestCode){
case 1:
if(requestCode == 0){
data.getStringExtra("str3");
}
break;
default:
}
}
    • 数据传递
      • putExtra(); //可以传递8种基本数据类型;
      • Bundle(); //可以传递8种基本数据类型;
    • 回传数据  
      • a. 调用者Activity开启新的界面选用  startActivityForResult();
startActivityForResult(intent, 1); //如果没有回调则不用重写这个方法
      • b. 在新开启的Activity中设置返回值    
Intent intent = new Intent();
intent.putExtras();
setResult();//设置返回值
      • c. 操作关闭  finish();    
      • d. 在调用者Activity 中调用onActivityResult(); 方法    
 
 

Android 之 Intent(意图)的更多相关文章

  1. Android 隐式意图和显示意图的使用场景

    本文实现一个隐式意图的应用,激活短信应用 public void click4(View view) { Intent intent = new Intent(); intent.setAction( ...

  2. Android 隐式意图激活另外一个Actitity

    上篇文章<Android 显示意图激活另外一个Actitity>最后谈到显示意图激活另外一个Actitity会有一些局限性和弊端 本文介绍另一种方法:隐式意图激活另外一个Actitity ...

  3. Android之Intent深入

    Android中的意图包含多种用法,本文主要包括以下内容 显式意图 隐匿意图 要求结果回传的意图 显式意图 :必须指定要激活的组件的完整包名和类名 (应用程序之间耦合在一起) 一般激活自己应用的组件的 ...

  4. 什么是Intent(意图)

    1.Intent是一种运行时绑定(runtime bingding)机制,它能在程序运行的过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种 请求或者意愿,Android ...

  5. android之intent显式,显式学习

    intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction ...

  6. Android利用Intent与其他应用交互

    前言: 上一篇博客给大家聊了Intent的定义,分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法. Android系统的一个重要特性 ...

  7. Android解决Intent中的数据重复问题

    转载地址:http://www.cnblogs.com/anrainie/articles/2383941.html 最近在研究Android,遇到了一些Notification(通知)的问题: .N ...

  8. 【转】【Java/Android】Intent的简介以及属性的详解

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...

  9. 【Android开发精要笔记】Android的Intent机制

    Android的Intent机制 Intent对象的作用和构成 android意图机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者. 该服务的作用: 通过组件的配置信息了解系统中每个组 ...

随机推荐

  1. 【转】Linux下svn常用指令

    转自: http://blog.csdn.net/myarrow/article/details/8110858 1.将文件checkout到本地目录svn checkout path(path是服务 ...

  2. Java知多少(108)数据库查询简介

    利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如g ...

  3. apache.http.MalformedChunkCodingException: Chunked stream ended unexpectedly

    产生的原因,应该是服务器返回的数据不是规范的格式 .我使用的xutils的httpUtils来实现网络通信的,关于读取数据是在 StringDownloadHandler类中源代码 inputStre ...

  4. Android中使用POI加载与显示word文档

    最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...

  5. JS算法总结

    1.选择排序: var arr = [3,6,7,2,6,4,1,6,8,24,12,53]; function sort(arr){ // 当数组的长度小于1的时候结束递归 if(arr.lengt ...

  6. JS移动端滑屏事件

    来看看在pc上面的几个事件:onmousedown,onmousemove,onmouseup 我相信大家对这几个事件一定不陌生,第一个onmousedown表示鼠标按下,第二个onmousemove ...

  7. 如何查看distirbution agent的执行进度

    在transactional replication troubleshooting的过程中,经常会遇到下面的场景: 客户在发布端执行了一个几百万行的更新,结果导致性能下降. 客户很想知道目前dist ...

  8. hdu 2014鞍山赛区 5073 Galaxy

    题意:就是给你 n 个数,代表n个星球的位置,每一个星球的重量都为 1 ! 开始的时候每一个星球都绕着质心转动,那么质心的位置就是所有的星球的位置之和 / 星球的个数 现在让你移动 k 个星球到任意位 ...

  9. tiny4412的中断资源连接关系示意图

    在tiny4412的设备树中可以发现,中断资源是以树的形式呈现的,下面是我画的一张图,大致描述了tiny4412上中断资源的连接关系. 可以到http://pan.baidu.com/s/1ge0sz ...

  10. 妹味6:ajax与ajax封装

    (功能)ajax能且仅能 从服务器读取文件 (环境)需要服务器环境才能测试,可以用工具建立本地服务器环境 (缓存)解决缓存问题:url加时间戳让每次请求地址唯一,如 url='abc.txt?t='+ ...