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. 近期Windows 10 RedStone 2 Insider版本安装进度停留在百分之23、24解决方案

    近期安装Windows 10 RedStone 2的14965.14971会出现停留在23%或者24%的现象,解决办法是拔掉扩展的SD卡再重新安装.

  2. mysql ODBC connector相关问题

    mysql ODBC connector我安装了,怎么就不成功了 进到命令行,运行下边的:C:\>cd \windows\SysWOW64 C:\Windows\SysWOW64>odbc ...

  3. ERB预处理ruby代码

    cucumber.yml 文件可以用erb预处理,这样允许你在cucumber.yml文件中使用ruby代码生成值.所以如果你有几个配置要用相同值时,你可以这样写 # config/cucumber. ...

  4. cocos2d-x开发: 场景实体(entity)管理

    公司现在开新项目,主题的框架部分都是我自己在做,不用受到别人的牵制,所以还算是比较的自由,很好发挥. 游戏并不大,所以需要用到的地方并不多.今天花了一些时间写了场景entity管理的部分代码,还没有完 ...

  5. MyBatis知多少(2)

    MyBatis从目前最流行的关系数据库访问方法中吸收了大量的优秀特征和思想,并找出其中的协同增效作用.下图展示了MyBatis框架是如何吸收我们在多年使用不同方式进行数据库集成的 开发过程中所学到的知 ...

  6. Android版Ftp服务端软件

    分享一款开发的Android版Ftp服务端软件,支持Android4.0及以上版本,可以实现局域网无线传输文件到手机,或者把手机上的多媒体文件分享到iPad等设备来扩展这些设备的存储空间,详情请见软件 ...

  7. jQuery的maskedinput插件 设置input掩码

    一.下载插件  http://digitalbush.com/projects/masked-input-plugin/二.属性a: 表示只能输入大小写字母9:表示只能输入0-9之间的数字*:a和9的 ...

  8. Android注解编程的第一步---模仿ButterKnife的ViewBinder机制

    ButterKnife的使用极大方便了Android程序员的开发,实际上,我们可以自己模仿一下实现. 首先就是要了解Java注解的使用. 我们首先要声明一个@interface,也就是注解类: @Ta ...

  9. Velocity魔法堂系列三:模板与宿主环境通信

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  10. 关于Latch争用

    Latch是什么     Latch是SQL Server引擎保证内存中的结构的一致性的轻量同步机制.比如索引,数据页和内部结构(比如非叶级索引页).SQL Server使用Buffer Latch保 ...