上一节,我们通过对Activity的UI属性设置,完成了一个类似Activity切换的程序,可是大家都知道,明明只有一个Activity的子类存在于程序当中,谈何切换呢?
本节将从实质上去完成这个功能。
进入本文之前,我们先来看看一个类;android.content.Intent
Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION请求给Android,Android会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器Activity来浏览网页。
简单说来,Intent允许在一个Activity中调用另外一个Activity,并且允许在不同的Activity之间传递参数。
这一节,我们只介绍怎样在Activity内调用另外一个Activity,并不传递参数。
先来看效果图:
因为本程序涉及的类和文件比较多,为了简便,就不在strings.xml中设置程序用到的字符串了,直接在文件和类里面使用。
先在程序自己生成的main.xml中设置第一个Activity的布局配置,包括一个TextView和一个Button,代码如下所示:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="欢迎来到IrvingSun的安卓程序"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击进入下一页"
/>
而后,我们再在此目录下,重新生成一个mylayout.xml,同样是配置一个TextView和一个Button,这个xml的配置是为了第二个Activity而准备的,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="对不起程序出错了,请点击“上一步”返回操作"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一页"
/>
</LinearLayout>
接下来就是分别把这两个xml分别关联到两个Activity的子类中去,并且为两个Button关联上点击事件,在事件的实现中,添加上Intent类的功能,就大功告成啦。
其中,Activity1的代码如下,
public class AndroidWithIntent_Activity1 extends Activity {
private Button button1 ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//关联UI配置
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//new 一个Intent对象,并指定要启动的class
Intent intent = new Intent();
intent.setClass(AndroidWithIntent_Activity1.this, AndroidWithIntent_Activity2.class);
startActivity(intent);
AndroidWithIntent_Activity1.this.finish();
}
});
}
}
其中
intent.setClass(AndroidWithIntent_Activity1.this, AndroidWithIntent_Activity2.class);
startActivity(intent);
这句说明,Intent是要从Activity1跳转到Activity2,
startActivity(intent);说明从intent中获取信息,跳转。
而后面的
AndroidWithIntent_Activity1.this.finish();
是指将这个Activity1给关闭了。
同样的道理,Activity2的代码也应该是这样的套路,代码如下,就不具体再分析了;
public class AndroidWithIntent_Activity2 extends Activity {
private Button button2 ;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//new 一个Intent对象,并指定要启动的class
Intent intent = new Intent();
intent.setClass(AndroidWithIntent_Activity2.this, AndroidWithIntent_Activity1.class);
startActivity(intent);
AndroidWithIntent_Activity2.this.finish();
}
});
}
}
最后,我们需要将我们自己新建的Activity配置进入AndroidManifest.xml,
在该文件中,存在application标签,里面存放的是Activity标签,可以看到,我们生成好的Activity1已经配置好在里面了,在该Activity的同级位置,添加如下代码:
<activity android:name="AndroidWithIntent_Activity2"></activity>
这样我们的系统就可以识别我们新建的Activity类了。
在下一节我们将介绍如何在Activity之间切换的同时,传递点数据过去,就像是在html页面间传递数据一样。
- 大小: 18.4 KB
- 大小: 17.2 KB
分享到:
相关推荐
Android学习笔记(七):多个Activity和Intent
Android自学笔记:Android2.3源码下载
Android学习笔记(九):Activity-RelativeLayout
Android学习笔记(十一):Activity-ListView
Android学习笔记(十二):Activity-Spinner
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...
Android学习笔记(四)Android 中Activity页面的跳转及传值 Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)...
Android学习笔记(十):Activity-TableLayout和ScrollView
NULL 博文链接:https://sarin.iteye.com/blog/1636484
Android学习笔记(八):Activity-OpenMenu和LinearLayout
本文的是深入重点讲解Activity,主要Activity生命周期、Activity之间数据交互、Activity启动模式、Task和BackStack。
Activiti 学习笔记七:连线(SequenceFlow)
NULL 博文链接:https://sarin.iteye.com/blog/1665694
[转载]Android学习笔记(五):Activity和main.xml文件
Android 学习笔记(十四):Activity-AutoCompleteTextView
Android 学习笔记(十五):Activity-GalleryView
Android 学习笔记(十三):Activity-GridView
20150908上传之前看的android笔记
android studio实现笔记本
1. 基础本文其实是针对《Android笔记之:App模块化及工程扩展的应用》和《Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解》的一个扩展和应用场景。所以当然也需要这两篇文章的基础:(1). Andr