Android---8---Intent及使用Intent传递数据
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组
件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动
服务、以及发送广播等场景
Intent是一种运行时绑定机制,它能在程序运行的过程中连接两个不同的组件。通过intent程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。
在这些组件之间的通讯中,主要是由Intent协助完成的。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供自检互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如:在一个联系人维护的应用中,当我们在一个联系人列表屏幕上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕。
为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做查看的动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intentintent),将构造的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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.button);button.setOnClickListener(this);}@Overridepublic 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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中,第一个活动的下面添加:<activityandroid:name=".OtherActivity">
OK了,运行一下:
OK,成功。
更多相关文章
- android 从文件制定位置读取数据
- 还原Android彩信数据库
- 一种Android数据请求框架
- 使用delphi 开发 web(五)Android 与delphi 服务器交互访问数据库
- Android 2.2数据共享功能开启与否将由运营商自主决定
- android组件式开发(1)——可复用的弹出式菜单
- Android Basic-xml的数据读取及保存
- android组件通讯 Intent Filter隐式实现Intent
- android 使用https请求请求数据