android学习笔记(4)Intent初级学习

对应若水老师的视频教程第7课

这节课程讲解了intent,是对动作的抽象描述,是意图的意思,建立一个intent就可以给一个动作给他来执行.inten是android开发的精髓所在.

一,点击按钮实现给一个指定号码打电话

 btn1.setOnClickListener(listener);

    private OnClickListener listener =new OnClickListener() {
	Intent intent = new Intent();
		@Override
		public void onClick(View v) {
			intent.setAction(Intent.ACTION_CALL);  //给intent赋与打电话的动作
			intent.setData(Uri.parse("tel:110"));  //设置电话号码
			startActivity(intent);                 //启动
			Toast.makeText(MainActivity.this,"打电话给110",Toast.LENGTH_SHORT).show();//显示提示
		}
	};

二,点击按钮实现给一个指定号码发短信

 btn1.setOnClickListener(listener);

    private OnClickListener listener =new OnClickListener() {
	Intent intent = new Intent();
		@Override
		public void onClick(View v) {
		case R.id.button1:
			intent.setAction(Intent.ACTION_SENDTO);
			intent.setData(Uri.parse("smsto:110"));
			intent.putExtra("sms_body", "没事,骚扰下~~");  //注意格式
			startActivity(intent);
			Toast.makeText(MainActivity.this,"发短信给110",Toast.LENGTH_SHORT).show();//显示提示
		}
	};

三,在一个activity中启动另一个activity

一套activity最基本的要包括这些内容:

1,activity类(xxActivity.java)

2,布局文件(layout/xxx.xml)

3,在配置文件中注册这个activity

<activity

android:name="xxxxx"

android:label="xxxx" >

..................

</activity>

有了这些基本要素,就可以在另一个activity中调用这个activity了.

//为了方便,把这个跳转放在一个button点击事件中去.
Intent intent=new Intent();
intent.setclass(MainActivity.this,SecondActivity.class);//参1是packageContext,一般是指向MainActivity自己;参2是cls指向要调用的activity的class
startActivity(intent);

配置文件加入:

<activity android:name=".SecondActivity"  //与activity的名字相同
	android:label="@string/app_name">  //根据需要自行修改
</activity>

以上这些都是最基本的内容,如果你的SecondActivity中有功能,运行时就能实现从MainActivity跳转到SecondActivity去执行它的功能.接下来就是怎么在activity之间传递数据呢?

发送方:

Intent intent=new Intent();
intent.setclass(MainActivity.this,SecondActivity.class);
intent.putExtra("str","hello"); //putExtra();可以发送许多类型的数据!
startActivity(intent);

接收方:

Intent intent=getIntent();
Bundle bundle=intent.getExtras();  //bundle是什么鬼?评论上补充.
String str=bundle.getString("str");//字符就存进了str中了

接着就有意思了,上面可以理解为:实现点击一个按钮跳转到另一个界面去,接下来得在另一个界面中点击一个按钮又跳回来,并且还要返回一个数据.

在MainActivity中定义:

private final static int REQUEST_CODE=1;  //相当于一个专用暗号,为下面定义的intent所有,如果定义了多个Intent就要分配 不同的暗号,为什么要分配暗号?就是为了一对一,防止多对一或一对多的情况出现

按钮监听中写:

Intent intent=new Intent();
intent.setclass(MainActivity.this,SecondActivity.class);
intent.putExtra("str","hello");
//startActivity(intent);
startActivityForResult(intent,REQUEST_CODE);  //startActivity(intent);是无返回值的,这个就有.但要写一个       //onActivityResult方法如下
protected void onActivityResult(int requestCode,int resultCode,Intent data)//学会用方法构造器构造它!
{
	if(requestCode==REQUEST_CODE)//防止多对一
	{
		if(resultCode==secondActivity.RESULT_CODE)//防止一对多
		{
				Bundle bundle=data.getExtras();
				String str=bundle.getString("back");
				Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();
		}
	}
}

在SecondActivity中定义:

public final static int RESULT_CODE=1;

按钮监听中写:

Intent intent=new Intemt();
intent.putExtra("back","Back Data");
setResult(RESULT_CODE,intent); //设置返回值
finish();  //kill当前的activity

这样就OK啦!想一想,安卓的软件是不是很容易?

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 22:13:52

android学习笔记(4)Intent初级学习的相关文章

Android学习笔记-Activity&Intent

界面activity_main.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="matc

Cocos2d-x 3.1.1 学习笔记(四)学习打包Android平台APK!

从cocos2dx 3.1项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷! 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: Android SDK下载http://developer.android.com/sdk/index.html Android NDk下载http://developer.android.com/tools/sdk/ndk/index.html Android JDK下

【web开发学习笔记】Structs2 Action学习笔记(一)

1.org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter准备和执行 2. <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> url-pattern约定熟成只写/*,没必要写*.action 3. <

【web开发学习笔记】Structs2 Action学习笔记(二)

action学习笔记2-有关于action method的讨论 Action执行的时候并不一定要执行execute方法,可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐) 方法一 <struts> <constant name="struts.devMode" value="true" /> <package name="user" e

【web开发学习笔记】Structs2 Action学习笔记(三)action通配符的使用

action学习笔记3-有关于通配符的讨论 使用通配符,将配置量降到最低,不过,一定要遵守"约定优于配置"的原则. 一:前端htm <前端代码html> </head> <body> <a href="<%=context %>/actions/Studentadd">添加学生</a> <a href="<%=context %>/actions/Studentdel

HANA学习笔记1-搭建HANA学习环境

一 硬件环境     两台电脑,一台为服务器装跑HANA虚拟机,一台为客户端运行HANA_STUDIO     服务器:内存至少需要16G     windows server 2003 64位     客户端:windows 7 64位   二软件环境     服务器:VMware 9.0    HANA虚拟机镜像     客户端:jdk   sapcar   SAP_HANA_CLIENT SAP_HANA_STUDIO 软件的下载地址如下:     HANA虚拟机镜像:http://pan

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

python学习笔记三---segmaphore信号量学习

# *-* coding=gb2312 *-* ''' 信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问.信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数. 每次有一个线程获得信号量时,计数器-1.若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量. ''' import threading import random import time class MyThread(threading.Thread): availableTables=[

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------