从零开始学androidIntent初步.四十.
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初步.四十.相关推荐
- 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)
从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...
- 从零开始学java(二十六)--多维数组,多维数组存储表格数据
从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...
- 从零开始学R(四)——常用命令:帮助,文件导入与导出与基本操作
R的常用命令 R的命令非常多,但是有一些命令是非常常用的,在这里我做一个汇总,便于大家使用.(Tips:关于下载和安装R的package以及工作目录的获得与设置命令在第二篇已经聊过,此时就不再赘述了, ...
- 从零开始学USB(二十二、USB接口HID类设备(四)_报表描述符Local类)
本地项目标签定义控件的特征. 这些项目不会转移到下一个主要项目. 如果Main项定义了多个控件,则可能会有几个类似的Local项标签. 例如,一个Input项可能有几个与之关联的Usage标签,每个控 ...
- 从零开始学USB(二十四、USB接口HID类设备(六)_物理描述符)
物理描述符也称作实体描述符.被用来描述设备的行为特性. 物理描述符是一种数据结构,它提供有关激活控件或控件的人体特定部分的信息. 例如,物理描述符可能指示右手拇指用于激活按钮5.应用程序可以使用此信息 ...
- 从零开始学ios开发(十四):Navigation Controllers and Table Views(上)
这一篇我们将学习一个新的控件Navigation Controller,很多时候Navigation Controller是和Table View紧密结合在一起的,因此在学习Navigation Co ...
- 从零开始学USB(二十四、最简单的USB驱动开始)
18年底,花了2个月啃学习USB2.0协议.现在终于开始要派上用场了,开始和代码打交道了. 当然,现在只是从简单的开始usb设备驱动开始,后面再慢慢的分析usb总线,usb的hub之类. 先给出代码, ...
- 从零开始学Pytorch(四)之softmax与分类模型
softmax的基本概念 分类问题 一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度. 图像中的4像素分别记为x1,x2,x3,x4x_1, x_2, x_3, x_4x1,x2,x ...
- 从零开始学ios开发(十二):Table Views(中)UITableViewCell定制
我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imag ...
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...
最新文章
- WCF配置文件全攻略
- 集合啦,NLP数据增强技术!超全资源汇总
- Verilog RTL 代码设计示例
- Mac 技术篇-Oracle数据库官方连接工具SQL Developer的安装与连接演示
- C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑
- 掌握 ASP.NET 之路:自定义实体类简介 来源 :msdn
- 图像 pipeline_ARADEEPOPSIS:一个基于叶状态语义分割的自动植物表型Pipeline
- C/C++求一个整数的二进制中1的个数
- asp ado 连接测试_ASP.NET Core 简介
- mysql8.0.12怎么用_Mysql8.0.12安装教程方法 Mysql8.0.12安装教程
- Postgresql 9.3外部数据封装的新功能
- Cool_gamesetup.exe山寨版熊猫烧香病毒
- Python 汽车之家最新 全系车型参数(包含历史停售车型)
- 启用Administrator账户解决windows10家庭版修改c盘Users下的中文用户名
- 浅谈个人对读书的看法
- 利用python拼接图片代码_Python实现图片拼接的代码
- vue 实现打字机效果
- SAP中销售订单计划行类别中请求/装配对物料需求计划的影响测试
- 改计算机名字 和 命令
- 音乐播放器(网页手机版)使用Jquery插件