1、Intent(意图):Intent是一种运行时绑定机制(runtime binding),用于在两个Activity之间传递数据。Intent也具有媒体中介的作用,实现调用者与被调用者之间的解耦;
2、Intent传递数据通用方式:(1)在Main.java中构造一个Intent;(2)然后调用startActivity(intent)将构造的Intent传入;(3)系统根据Intent中的描述,到Manifest.xml寻找满足此要求的Activity(4)系统会调用这个Activity,传入Intent,执行相应的操作~
3、新建Android项目”android_intent“,创建Activity名为”Main“;
4、在“res/layout/main.xml”中添加一个”Button“,完成布局文件的编写,代码如下:
~~~
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试使用Intent传递数据" >
</Button>
~~~
5、新建“OtherActivity.java”,并在“Superclass”中选择“android.app.Activity”(继承Activity),并在其中添加onCreate()方法(代码在步骤9);
6、接着声明一个布局文件,在“res/layout”中新建“other.xml”,将其代码修改如下:
~~~
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/msg"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</TextView>
</LinearLayout>
~~~
7、打开“src”中的“Main.java”,在Main类中添加代码以构造Intent并启动Intent,添加后代码如下:
~~~
public class Main extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);// 加载布局文件
button = (Button) this.findViewById(R.id.button);//根据Id查找视图
button.setOnClickListener(new View.OnClickListener() {//点击,启动点击事件,在其中新建意图
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//由Main.this传入OtherActivity.class,表示从当前意图传入目标意图。
Intent intent = new Intent(Main.this, OtherActivity.class);
// 在意图中传递数据,将数据临时存储在内存中
intent.putExtra("name", "张三");
intent.putExtra("age", 23);
intent.putExtra("address", "北京");
// 启动意图
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
~~~
8、打开“AndroidManifest.xml”,在“Application”标签下添加一个“Activity”标签(以使系统在传入Intent后能查找到名为“OtherActivity”的活动),代码如下:
~~~
<activity android:name=".OtherActivity" >//用“.”表示当前这个类
</activity>
~~~
9、在“OtherActivity.java”中添加一个“getIntent”方法,获取意图,随后调用get方法获取数据,再将获取的信息放入“TextView”中。完整代码如下:
~~~
public class OtherActivity extends Activity {
private TextView textview;
public OtherActivity() {
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {//创建Activity
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);// 加载布局文件(必须!)
textview = (TextView) this.findViewById(R.id.msg);
//使用getIntent方法获取意图
Intent intent = getIntent();
//使用get方法取出Intent中的数据
int age = intent.getIntExtra("age", 0);
String name = intent.getStringExtra("name");
String address = intent.getStringExtra("address");
textview.setText("age--->>" + age + "\n" + "name--->>" + name + "\n"
+ "address--->>" + address + "\n");
}
}
~~~
10、右击“src”下的包,选择“Run as”中的“Android Application”来运行程序,结果截图如下:
![](https://box.kancloud.cn/2016-08-23_57bc06b032dd4.jpg)
点击“Button”显示:
![](https://box.kancloud.cn/2016-08-23_57bc06b065d99.jpg)
Ps:第一个Android程序,见笑~
- 前言
- Android应用程序剖析
- (一)——生命周期
- (二)——使用Intent传数据之通用方式
- (三)——使用静态变量传递数据
- (四)——通过剪切板传递数据
- (五)——通过全局变量传递数据
- (六)——从Activity返回数据
- adt-bundle-linux-x86_64-20131030下新建工程提示找不到adb和R.java问题的解决
- Eclipse启动时提示fail to create the Java Virtual Machine问题的解决
- Android常见UI组件之ListView(一)
- Android常见UI组件之ListView(二)——定制ListView
- (七)——显示对话框窗口
- (八)——显示进度对话框
- (九)——更复杂的进度对话框
- (十)——使用意图链接活动
- (十一)——从意图返回结果
- (十二)——使用意图传递数据的几种方式
- (十三)——碎片(一)
- (十四)——在运行时添加碎片(附源码)
- (十五)——碎片的生命周期(附源码)
- (十六)——碎片之间进行交互(附源码)
- (十七)——使用意图调用内置应用程序
- (十八)——使用意图筛选器和实现浏览网页(附源码)