显示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使用方法的更多相关文章

  1. Activity中setResult(int resultCode, Intent data)与onActivityResult(int requestCode, int resultCode, Intent data)方法的调用

    关于Activity的生命周期 onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化设置的地方 ...

  2. intent.setFlags方法中参数值的含义

    intent.setFlags()方法中参数的含义 1.FLAG_ACTIVITY_NEW_TASK: 例如现在栈一的情况是:A    B   C(C位于栈顶),C通过intent跳转到D,并且这个I ...

  3. intent.setFlags方法中的参数值含义

     一. intent.setFlags()方法中的参数值含义: 1.FLAG_ACTIVITY_CLEAR_TOP:例如现在的栈情况为:A B C D .D此时通过intent跳转到B,如果这个int ...

  4. intent.putExtra()方法参数详解

    [开篇骂几句:fuck]1.扯淡intent.putExtra()怎么使用?2.胡说intent.putExtra(); [扯淡:其实你在问它怎么用的时候,你要明白,你知道不知道这是个什么东东,有必要 ...

  5. Intent 使用方法全面总结

    调用拨号程序 // 给移动客服10086拨打电话 Uri uri = Uri.parse("tel:10086"); Intent intent = new Intent(Inte ...

  6. Intent 的两种主要使用方法

    首先建立两个activity界面 Activity1如下 public class MainActivity extends AppCompatActivity { private Button bt ...

  7. Android中实现APP文本内容的分享发送与接收方法简述

    谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...

  8. android Intent介绍

    Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 ...

  9. Intent(二)隐式调用intent

    在上一节我们一起学习了显示调用Intent,这一节我们来学习如何隐式调用Ingtent.有了这个我们就可以调用其他的线程,或者程序,可以让我们的应用程序变得多彩,如打开网页,拨打电话等. 接下来让我们 ...

随机推荐

  1. chrome关闭后还在进程中运行

    1.网上搜到信息: 设置 “即使关闭浏览器也后台运行” 取消打勾 2.然后我找了一下,应该是这个选项:“关闭 Google Chrome 后继续运行后台应用” 3. 4. 5.

  2. 十二道MR习题 - 3 - 交集并集差集

    题目 有两个文件A和B,两个文件中都有几百万行数字,现在需要找出A文件和B文件中数字集合的交集.并集.以及A对B的差集. 简单说一下思路: 这个问题关键在于key和value的设计.这里我将文件中的数 ...

  3. UIElement.IsMouseCaptured属性的应用

    一个只读属性,该值描述了此元素是否捕获到了鼠标,如果该值为true,则说明此元素捕获到了鼠标:否则,未捕获到(例如:当鼠标进入到一个Button的可视化范围之内,当Button按钮外观效果发生了变化时 ...

  4. Ubuntu 配置静态ip的方法

    1. 配置静态ip地址 $sudo vi /etc/network/interfaces 原有内容只有如下两行: auto lo iface lo inet loopback 向末尾追加以下内容: a ...

  5. PhpStorm怎么用,PhpStorm常用快捷键教程

    设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“Eclipse” -> 然后“Copy”一份 ->再个 ...

  6. day5-shutil模块

    一.概述 我们通过python操作文件时,除正常读写操作外,有时还需要进行拷贝.删除.打包等操作,虽然os模块提供了部分功能,但还是不够完善,这里要讲讲专业的高级的文件,文件夹,压缩包处理模块shut ...

  7. SVN提交出错--URL access forbidden for unknown reason

    使用SVN在eclipse中提交文件,但是出现错误,如下: URL access forbidden for unknown reasonsvn: Commit failed (details fol ...

  8. 【机器学习基石笔记】九、LinearRegression

    [一] 线性回归直觉上的解释 得到Ein = mean(y - wx)^2 [二] w的推导 Ein = 1/N || xw - y||^2 连续.可微.凸函数 在各个方向的偏微分都是0 Ein = ...

  9. Lua基础---运算符

    众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛! Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还有特殊运算符. 1.算术运算符有: + ...

  10. CentOS 7下sqlite3的问题修复

    Centos7下的nltk启动问题 CentOS 7, Python 3.6,ipython 6.0.0 问题描述 ipython 启动ipython命令 import nltk 爆出以下的错误信息: ...