Intent使用方法
显示Intent
通过构造函数的重载,创建Intent对象,并用startActivity()启动目标活动。
目标活动需要在AndroidManifest.xml中注册
......
Intent intent = new Intent(FristActivity.this,SecondActivity.class);
startActivity(intent);
......
隐式Intent
指定了一系列的action和category。
1.在AndroidManifest.xml中添加如下代码:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category android:name="andorid.intent.category.DEFAULT"/>
<intent-filter>
</activity>
只有同时匹配action和category才能响应该intent。
2.在FirstActivity中的按钮点击事件里加入如下代码
......
public void onClick(View v){
Intent intent = new Intent("com.example.activitytest.ACTION.START");
startActivity(intent);
}
......
每个Intent中只能指定一个action,可以指定多个category。
可以通过Addcategory()方法添加多个category。
使用Intent调用系统浏览器
......
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("www.baidu.com")); //解析Uri
startActivity(intent);
}
......
可以在AndroidManifest.xml文件中<intent-filter>下<data>标签中指定响应数据的类型。例如:<data android:scheme="http">(android:host、port、path、mimeType)
除http协议外,还可以在Uri中指定其他协议;geo(地理位置)、tel(拨打电话)等。
Intent传递数据
使用putExtra()方法传递数据
......
public void onClick(View v) {
String data = "Hello World";
Intent intent = new Intent(FirstAcitivity.this,SecondActivity.class);
intent.putExtra("extra_data",data); //将数据以键-值对暂存在intent
startActivity(intent);
}
......
从intent中获取数据
public class SecondActivity extends appCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Intent intent = getIntent(); //获取intent实例
String data = intent.getStringExtra("extra_data"); //从intent中获取数据
}
}
返回数据给上一个Activity
1.在FirstActivity中调用startActivityForRest()方法
......
public void onClick(View v){
Intent intent = new Intent(FirstActivity.this,SecondAcitvity.class);
startActivityForResult(intent,1); //1为请求码,只要是唯一值即可。
}
......
2.在SecondActivity中注册点击事件
......
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.onClickListener){
public void onClick(View v){
Intent intent = new Intent();
intet.putExtra("data_return","Hello FirstActivity");
setResult(RESULT_OK,intent); //向上一个活动返回数据,两个参数:RESULT_OK/RESULT_CANCELED(处理结果),intent(带有数据的intent)
finish(); //销毁当前活动
}
}
......
3.SecondActivity销毁后,回调onActivityResult()方法。在FirstActivity中重写这个方法得到返回数据
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){ //判断数据来源
case 1:
if(resultCode == RESULT_OK){ //判断处理结果
String retunedData = data.getStringExtra("data_return"); //取值
}
break;
default;
}
}
通过requestCode(请求码)判断数据来源,通过resultCode判断处理结果,再从data中取值。
Intent使用方法的更多相关文章
- Activity中setResult(int resultCode, Intent data)与onActivityResult(int requestCode, int resultCode, Intent data)方法的调用
关于Activity的生命周期 onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化设置的地方 ...
- intent.setFlags方法中参数值的含义
intent.setFlags()方法中参数的含义 1.FLAG_ACTIVITY_NEW_TASK: 例如现在栈一的情况是:A B C(C位于栈顶),C通过intent跳转到D,并且这个I ...
- intent.setFlags方法中的参数值含义
一. intent.setFlags()方法中的参数值含义: 1.FLAG_ACTIVITY_CLEAR_TOP:例如现在的栈情况为:A B C D .D此时通过intent跳转到B,如果这个int ...
- intent.putExtra()方法参数详解
[开篇骂几句:fuck]1.扯淡intent.putExtra()怎么使用?2.胡说intent.putExtra(); [扯淡:其实你在问它怎么用的时候,你要明白,你知道不知道这是个什么东东,有必要 ...
- Intent 使用方法全面总结
调用拨号程序 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent intent = new Intent(Inte ...
- Intent 的两种主要使用方法
首先建立两个activity界面 Activity1如下 public class MainActivity extends AppCompatActivity { private Button bt ...
- Android中实现APP文本内容的分享发送与接收方法简述
谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...
- android Intent介绍
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...
- Intent(二)隐式调用intent
在上一节我们一起学习了显示调用Intent,这一节我们来学习如何隐式调用Ingtent.有了这个我们就可以调用其他的线程,或者程序,可以让我们的应用程序变得多彩,如打开网页,拨打电话等. 接下来让我们 ...
随机推荐
- nginx 403错误
1.出现此种错误的原因有可能是所有者对目录没有写的权限,此时可用chmod 777 目录名 先完全放开权限,如果问题解决,则在慢慢缩小访问权限. 解决办法:chown -R nginx_user:ng ...
- 关于有时候Servlet会被执行两次的问题
用<a>标签做了下载跳转,为什么点一次,servlet会被执行两次? 写了一个最简单的文件下载 点击超链接向servlet发送一个请求,然后下载该文件.可是每次该servlet都会被访问两 ...
- mysql升级的一些踩坑点
升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法最省事也最保险 缺点:大库的mysqldump费时费力. 2.直接替换掉 mysql 的安装目录和 my. ...
- 【Demo】CSS图像拼合技术
图像拼合 图像拼合 - 简单实例 <style> img.home { width: 46px; height: 44px; background: url(/images/img_nav ...
- 最大流EK算法/DINIC算法学习
之前一直觉得很难,没学过网络流,毕竟是基础知识现在重新来看. 定义一下网络流问题,就是在一幅有向图中,每条边有两个属性,一个是cap表示容量,一个是flow 表示流过的流量.我们要求解的问题就是从S点 ...
- mongodb底层存储和索引原理——本质是文档数据库,无表设计,同时wiredTiger存储引擎支持文档级别的锁,MMAPv1引擎基于mmap,二级索引(二级是文档的存储位置信息『文件id + 文件内offset 』)
MongoDB是面向文档的数据库管理系统DBMS(显然mongodb不是oracle那样的RDBMS,而仅仅是DBMS). 想想一下MySQL中没有任何关系型数据库的表,而由JSON类型的对象组成数据 ...
- [转载]java在线比较两个word文件
一.项目背景 开发文档管理系统或OA办公系统的时候,实现在线处理word文档的功能比较容易,但是也经常会有客户提出文档版本管理的需求,这就需要同时在线打开两个word文件,对比两个不同版本的word文 ...
- redis memcache rabbitMQ
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动 ...
- laravel发送邮件
这里已163为例: 1..env文件配置和mail.php配置(默认使用.env) MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=465 MAIL ...
- Android中从SD卡中获取歌词并与歌曲同步
先看看效果图吧,再看代码 转换文件的编码格式 package com.xm; import java.io.BufferedInputStream; import java.io.BufferedRe ...