Intent意图是android中非常重要的部分,他在Activity,service中有较为广泛的应用。

1
public void startActivity(Intent intent)
普通
启动一个Activity,并通过Intent传送数据
2
public void startActivityForResult(Intent intent, int requestCode)
普通
启动并接收另一个Activity程序回传数据,当requestCode大于0才可以触发onActivityResult()
3
public Intent getIntent()
普通
返回启动当前Activity程序的Intent
4
protected void onActivityResult(int requestCode, int resultCode, Intent data)
普通
当需要接收Intent回传数据的时候覆写此方法对回传操作进行处理
5
public void finish()
普通
调用此方法会返回之前的Activity程序,并自动调用onActivityResult()方法
6
public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
普通
处理返回的Cursor结果集

接下里用例子逐步讲解

最简单的Intent

主界面xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="141dp"android:text="转跳" /></RelativeLayout>

转跳界面Xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="我是第二屏界面" /></RelativeLayout>
package com.example.intent1;import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(MainActivity.this, Other.class);//创建Intent 对象startActivity(intent);//开启intentMainActivity.this.finish();//使当前Activity结束}});}}

Otner.java

package com.example.intent1;import android.app.Activity;
import android.os.Bundle;
import android.text.style.SuperscriptSpan;public class Other extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.other);
}
}

接下来看一看可以传递数据的Intent

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="传递" /><EditTextandroid:id="@+id/edit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:ems="10"android:text=" /></RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="传递" /><EditTextandroid:id="@+id/edit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:ems="10"android:text="" /></RelativeLayout>

Other.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView" /><Buttonandroid:id="@+id/button2"android:gravity="center_horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="获取数据" /></LinearLayout>

java文件

package com.example.intent2;import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends Activity {
private Button button;
private EditText info;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button)this.findViewById(R.id.button1);info=(EditText)this.findViewById(R.id.edit);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this,Other.class);//设置意图intent.putExtra("info", info.getText().toString());//为意图增加附加信息startActivity(intent);//开始意图MainActivity.this.finish();//终止当前Ativity}
});}}

Other.java

package com.example.intent2;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Other extends Activity {Intent intent;private Button button;private TextView text;
@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);super.setContentView(R.layout.other);button=(Button)this.findViewById(R.id.button2);text=(TextView)this.findViewById(R.id.textView1);intent=super.getIntent();//获取意图对象button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString info=intent.getStringExtra("info");//获取传递的数据text.setText(info);//显示数据}});}
}

使用Intent传递并返回数据

借助Intent实现成人身高体重测试程序

采用BMI 法 体重指数 =  体重(公斤) 除 身高(米)的平方    kg/m2
正常体重 : 体重指数 = 18 - 25
超重           : 体重指数 = 25 - 30
轻度肥胖 : 体重指数 > 30
中度肥胖 : 体重指数 > 35
重度肥胖 :  体重指数 > 40 

xml

package com.example.inten3;import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {
private Button resetInfo,getInfo;
private EditText height,weight;
private TextView detail;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);resetInfo=(Button)this.findViewById(R.id.button1);//重置信息按钮getInfo=(Button)this.findViewById(R.id.button2);//获取信息按钮height=(EditText)this.findViewById(R.id.editText1);//身高输入框weight=(EditText)this.findViewById(R.id.editText2);//体重输入框detail=(TextView)this.findViewById(R.id.textView3);//信息显示
//   重置按钮的监听resetInfo.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub
//将他们都设置为空weight.setText("");height.setText("");detail.setText("");}
});
//  获取信息按钮的监听getInfo.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent =new  Intent(MainActivity.this, Other.class);//创建意图对象
//  增加附加信息
intent.putExtra("weight", Double.valueOf(weight.getText().toString()));
intent.putExtra("height", Double.valueOf(height.getText().toString()));
//设置启动并传递请求码
startActivityForResult(intent, 1);}
});}
//    处理返回的信息@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubswitch (resultCode) {case RESULT_OK://设置信息MainActivity.this.detail.setText(data.getStringExtra("endMsg"));break;default:break;}}}

Other.java

package com.example.inten3;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class Other extends Activity {private Button returnMsg, resetbut;private TextView weightMsg, heightMsg;private Double weight, height;private String endMsg;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);super.setContentView(R.layout.other);returnMsg = (Button) this.findViewById(R.id.Otherbutton1);resetbut = (Button) this.findViewById(R.id.Otherbutton2);weightMsg = (TextView) this.findViewById(R.id.OthertextView1);heightMsg = (TextView) this.findViewById(R.id.OthertextView2);// 获取意图对象Intent intent = super.getIntent();// 获得参数weight = intent.getDoubleExtra("weight", 0);height = intent.getDoubleExtra("height", 0);weightMsg.setText("您的体重:" + weight + "KG");heightMsg.setText("您的身高:" + height + "CM");returnMsg.setOnClickListener(new View.OnClickListener() {// 对传入的数据进项判断和处理@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDouble heightNum = height / 100;double endNum = weight / (heightNum * heightNum);if (endNum >= 18 && endNum <= 25) {endMsg = "您的身体很正常哦,继续保持亲。";} else if (endNum < 18) {endMsg = "亲啊,不能总是减肥啊,您现在可是偏瘦哦,当心身体";} else if (endNum > 25 && endNum <= 30) {endMsg = "您现在有一点胖哦,不过不要紧,要注意饮食哦";} else if (endNum > 30 && endNum <= 35) {endMsg = "亲,您已经进入肥胖人群 了哦,注意锻炼哦";} else if (endNum > 35) {endMsg = "额,你,你。。你怎么可以这样,还不赶快减肥,当心找不到对象哦";}// 将参数设置到intnet上Other.this.getIntent().putExtra("endMsg", endMsg);// 设置返回集,并设置返回接受码Other.this.setResult(RESULT_OK, Other.this.getIntent());// 将dangqianActivity结束掉Other.this.finish();}});// 重新输入监听resetbut.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置返回集合取消状态码Other.this.setResult(RESULT_CANCELED, Other.this.getIntent());// 结束当前ActivityOther.this.finish();}});}
}

学习了intent的基本用途,下节我们来学习Intent调用系统指令来完成一些其他操作

下节预报:Intent进阶

从零开始学androidIntent初步.四十.相关推荐

  1. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...

  2. 从零开始学java(二十六)--多维数组,多维数组存储表格数据

    从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...

  3. 从零开始学R(四)——常用命令:帮助,文件导入与导出与基本操作

    R的常用命令 R的命令非常多,但是有一些命令是非常常用的,在这里我做一个汇总,便于大家使用.(Tips:关于下载和安装R的package以及工作目录的获得与设置命令在第二篇已经聊过,此时就不再赘述了, ...

  4. 从零开始学USB(二十二、USB接口HID类设备(四)_报表描述符Local类)

    本地项目标签定义控件的特征. 这些项目不会转移到下一个主要项目. 如果Main项定义了多个控件,则可能会有几个类似的Local项标签. 例如,一个Input项可能有几个与之关联的Usage标签,每个控 ...

  5. 从零开始学USB(二十四、USB接口HID类设备(六)_物理描述符)

    物理描述符也称作实体描述符.被用来描述设备的行为特性. 物理描述符是一种数据结构,它提供有关激活控件或控件的人体特定部分的信息. 例如,物理描述符可能指示右手拇指用于激活按钮5.应用程序可以使用此信息 ...

  6. 从零开始学ios开发(十四):Navigation Controllers and Table Views(上)

    这一篇我们将学习一个新的控件Navigation Controller,很多时候Navigation Controller是和Table View紧密结合在一起的,因此在学习Navigation Co ...

  7. 从零开始学USB(二十四、最简单的USB驱动开始)

    18年底,花了2个月啃学习USB2.0协议.现在终于开始要派上用场了,开始和代码打交道了. 当然,现在只是从简单的开始usb设备驱动开始,后面再慢慢的分析usb总线,usb的hub之类. 先给出代码, ...

  8. 从零开始学Pytorch(四)之softmax与分类模型

    softmax的基本概念 分类问题 一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度. 图像中的4像素分别记为x1,x2,x3,x4x_1, x_2, x_3, x_4x1​,x2​,x ...

  9. 从零开始学ios开发(十二):Table Views(中)UITableViewCell定制

    我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imag ...

  10. 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...

最新文章

  1. WCF配置文件全攻略
  2. 集合啦,NLP数据增强技术!超全资源汇总
  3. Verilog RTL 代码设计示例
  4. Mac 技术篇-Oracle数据库官方连接工具SQL Developer的安装与连接演示
  5. C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑
  6. 掌握 ASP.NET 之路:自定义实体类简介 来源 :msdn
  7. 图像 pipeline_ARADEEPOPSIS:一个基于叶状态语义分割的自动植物表型Pipeline
  8. C/C++求一个整数的二进制中1的个数
  9. asp ado 连接测试_ASP.NET Core 简介
  10. mysql8.0.12怎么用_Mysql8.0.12安装教程方法 Mysql8.0.12安装教程
  11. Postgresql 9.3外部数据封装的新功能
  12. Cool_gamesetup.exe山寨版熊猫烧香病毒
  13. Python 汽车之家最新 全系车型参数(包含历史停售车型)
  14. 启用Administrator账户解决windows10家庭版修改c盘Users下的中文用户名
  15. 浅谈个人对读书的看法
  16. 利用python拼接图片代码_Python实现图片拼接的代码
  17. vue 实现打字机效果
  18. SAP中销售订单计划行类别中请求/装配对物料需求计划的影响测试
  19. 改计算机名字 和 命令
  20. 音乐播放器(网页手机版)使用Jquery插件

热门文章

  1. 《Android MVPArms 使用butterknife遇到的坑》
  2. Mac 使用rz sz 命令
  3. opencv2/opencv.hpp”:No such file or directory 或找不到属性管理器
  4. dda算法c语言opengl实现
  5. 关于java的外语文献_java英文参考文献(涵盖3年最新120个)
  6. 云视频安防监控解决方案
  7. PDF文件在线合并如何操作
  8. Helen人脸数据集生成人脸分割
  9. 关闭打印机 文件共享的服务器,文件和打印机共享服务可以禁止?
  10. Egg.js框架的简单使用