Android---8---Intent及使用Intent传递数据

Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组

件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动

服务、以及发送广播等场景

Intent是一种运行时绑定机制,它能在程序运行的过程中连接两个不同的组件。通过intent 程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。

在这些组件之间的通讯中,主要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。

因此,Intent在这里起着一个媒体中介的作用,专门提供自检互相调用的相关信息,实现调用者与被调用者之间的解耦。

例如:在一个联系人维护的应用中,当我们在一个联系人列表屏幕上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕。

为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做查看的动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

首先,是布局界面,这里只有一个按钮,当点击按钮的时候,会蹦到另一个界面来显示联系人的详细信息。

先创建MainActivity:

package com.example.intentdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
 * 通过Intent来传递数据
 * 例如:手机联系人,当点中某人的时候,会显示这个人的详细信息
 * 当然是通过另一个界面来完成的
 * @author Caesar
 *
 */
public class MainActivity extends Activity implements OnClickListener{
	private Button button;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button  = (Button) findViewById(R.id.button);
		button.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		//创建一个Intent,表示会从MainActivity跳转到OtherActivity活动
		//第一个参数表示启动活动的上下文,第二个参数表示将要跳转的目标活动,接收.class类型
		Intent intent = new Intent(MainActivity.this, OtherActivity.class);
		//为Intent传入数据
		intent.putExtra("name", "张三");
		intent.putExtra("age", 15);
		intent.putExtra("address", "北京");
		intent.putExtra("tel", "121212121212");
		//启动活动
		startActivity(intent);
	}

}

因为程序要跳转到OtherActivity,所以应该在创建一个OtherActivity的类,让它继承Activity,复写其中的onCreate方法,并加载other布局,现在还没有other布局,需要先去创建。

因为OtherActivity主要用于显示信息,所以other布局中只有一个TextVIew用于显示信息。

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" >

    <TextView
        android:id="@+id/msg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

OtherActivity.java

package com.example.intentdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class OtherActivity extends Activity {
	private TextView textView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.other);
		textView = (TextView) findViewById(R.id.msg);
		//得到意图
		Intent intent = getIntent();
		//获取intent中的信息
		int age = intent.getIntExtra("age", 0);
		String name = intent.getStringExtra("name");
		String address = intent.getStringExtra("address");
		String tel = intent.getStringExtra("tel");
		String Info = "name-->" + name + "\n" + "age-->" + age + "\n"
				+ "address-->" + address + "\n" + "TEL:" + tel;
		//显示该信息
		textView.setText(Info);
	}
}

我们需要在注册表中为OtherActivity添加权限:

在application 中,第一个活动的下面添加:<activity android:name=".OtherActivity" >

OK了 ,运行一下:

OK,成功。

时间: 2024-10-05 06:38:05

Android---8---Intent及使用Intent传递数据的相关文章

Android 笔记-Fragment 与 Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

【Android基础】利用Intent在Activity之间传递数据

前言: 上一篇文章给大家聊了Intent的使用方法.怎样用Intent启动Activity和隐式Intent.这一篇文章给大家聊聊怎样利用Intent在Activity之间进行沟通. 从一个Activity获取返回结果: 启动一个Activity不不过startActivity(Intent intent)一种方法.你也能够通过startActivityForResult()启动一个Activity而且在它退出的时候收到一个返回结果. 比方.你能够调用系统相机在你的应用中,拍了一张照片,然后返回

android中使用Intent在activity之间传递数据

android中intent传递数据的简单使用: 1.使用intent传递数据: 首先将需要传递的数据放入到intent中 Intent intent = new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name", "使用Intent传递数据"); startActivity(intent); 然后再目标activity中接收数据: Intent intent=getInten

Android广播接收器和Activity间传递数据

Activity向广播接收器传递数据很简单,只需要在发送广播前将数据put进Intent中就行了. 广播接收器怎么向Activity传送数据?这里要用到接口,通过在广播接收器里定义一个接口,然后让接收广播接收器数据的Activity实现这个接口.先看下面的栗子,Activity发送一个广播,然后广播接收器返回一个字符串. Activity布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearL

android动态替换Fragment向下传递数据

以前传递数据都是使用Intent进行传递,但是intent是跳转,我们这个是动态替换 所以刚开始也是一脸懵逼,百度也百度不到,就自己慢慢摸索出来了: 话不多说,直接上代码:(主要核心代码加粗) package com.smartgentechnology;import android.content.Intent;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import

Android笔记Fragment与Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

android post方式给后台服务器传递数据

请求方式GET和POST的简单分别: get方式是把参数附加到URL地址后面,如: http://localhost:8080/loginServlet.html?username=123&password=456 post是将请求参数放到请求体中,以流的方式传到服务器,另外上传文件时,一定是post方式 下面的代码是用post方式模拟用户登录 com.yuanlp.qqloginpostandroid.os.Bundleandroid.support.v7.app.AppCompatActiv

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=&quo

【Android 初学】10、Intent对象的使用

Start Android 1.Intent对象的基本概念 1)Intent是Android应用程序组件之一: 2)Intent对象在Android系统当中表示一种意图: 3)Intent当中最重要的内容是action与data: 2.Intent对象的基本使用方法 3.使用Intent在Activity之间传递数据的方法 1)在Activity之间可以通过Intent对象传递数据: 2)使用putExtra()系列方法向Intent对象当中存储数据 3)使用getXXXExtra()系列方法从

Android入门(二)Activity-Toast、Intent

原文链接:http://www.orlion.ga/427/ 一.隐藏activity的标题 在activity的java代码的onCreate()方法中入requestWindowFeature(Window.FEATURE_NO_TITLE);如下: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window