版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章Android基本程序单元Activity5.1Activity简介在前面的学习中我们提到了,Android系统由Activity,Service,BroadcastReceiver和ContentProvider组成。其中Activity是使用频率最高、最重要的组件了。在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。在Activity的上面是一个Window对象,在Window之上通常是一个布局容器对象(如一个LinearLayout),再上面是我们要展示的组件,如按钮文本框、列表框等。本章我们将对Activity的生命周期、Activity的创建和使用做全面的讲解。5.1.1Activity的创建Activity是应用程序的入口,它提供了和用户交互的可视化界面。一个应用程序可能会有多个Activity(例如发短信,打电话等应用程序),创建一个Activity一般是继承Activity(当然也可以继承ListActivity,MapActivity等),覆盖Activity的onCreate()方法,在该方法中调用setContentView()方法展示要显示的视图,调用findViewById()方法实例化组件。注意Activity只有在清单文件(AndroidManifest.xml)中声明才能使用,它指定程序运行时首先加载的Activity。在Eclipse中创建一个Android程序,程序会自动在AndroidManifest.xml主设置文件中配置默认的Activity,代码如下:5.1.1Activity的创建<activityandroid:label="@string/app_name"android:name=".MainActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>5.1.1Activity的创建上面的代码中,用到了Activity的android:label属性和android:name属性,其中,android:label属性指定了Activity的显示标题,而android:name属性指定了Activity对应的类名;另外,在配置默认Activity时,用到了<intent-filter>属性,该属性用来设置Activity作为程序入口,并且显示在启动栏中,其中的<actionandroid:name=“ent.action.MAIN”/>属性用来定义Activity作为Android应用程序的入口,而<categoryandroid:name=“ent.category.LAUNCHER”/>属性用来指定Activity显示在Launcher(桌面启动器)里。5.1.1Activity的创建说明:(1)在AndroidManifest.xml文件中设置Activity时,只有设置了<categoryandroid:name="ent.category.LAUNCHER"/>属性,Activity才能显示在屏幕的启动栏中。(2)如果一个Android程序中有多个Activity,可以在AndroidManifest.xml文件中通过<intent-filter>属性设置默认启动的Activity,该属性类似于Java代码中的Main函数。5.1.2启动另一个Activity像我们在做Web开发一样,经常会从一个页面跳转到另一个页面。在Android中我们也经常会从一个Activity跳转到另一个Activity做出一些处理。从一个Activity启动另一个Activity可以使用startActivity方法或者startActivityForResult()方法(能够返回结果)。这两个方法要传递的参数是Android中的另外一个非常重要的组件Intent,它要用到另外一个对象Bundle,我们将要传递的信息封装到该对象里面,并通过Intent对象传递到另一个Intent中。Intent是相同或不同组件的信使,有关Intent的内容请参考第6章的内容。5.1.3Activity之间传递数据在WEB开发中我们经常把数据放在某个scope中(如request,session)来实现数据共享,在android系统中不同的activity又是如何传递数据的呢?这里要用到另外一个对象bundle,我们将要传递的信息封装在该Bundle对象里面,用Intent对象的putExtra方法来设置要传递的值、getExtras方法来获取返回值,并用Bundle接收,最后通过intent对象传递到另一个intent中。5.1.4Activity实例项目界面:添加用户名,学号,密码,在另一页面显示用户名,学号
图5.2第二个页面
图5.1第一个页面5.1.4Activity实例1、创建项目
5.1.4Activity实例2、添加布局文件
修改main.xml布局文件(这里增加了三个TextView,三个EditView,一个按钮)<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/>
5.1.4Activity实例<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/name"
/>
<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="学号:"android:id="@+id/textview2"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/number"
/>
5.1.4Activity实例
<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="密码:"android:id="@+id/textview1"
/>
<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/edittext1"android:text="EditText"android:password="true"
/><Buttonandroid:text="添加"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/button"/></LinearLayout>5.1.4Activity实例新建test2.xml布局文件(这里增加了四个TextView),这个页面是用来显示添加的用户名和学号<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/textview3"android:text="@string/hello"/>
5.1.4Activity实例<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/edittext2"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/textview4"android:text="学号:"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/edittext3"/></LinearLayout>5.1.4Activity实例3、创建Activity创建Test1Activity.java,另一个是test2.java。代码分别如下:Test1Activity.java
作用:获得页面输入的内容,存储并跳转到test2.xml。packagetju.android;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;publicclassTest1ActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*///声明对象
privateButtonb; privateTextViewtextview; privateTextViewc;
5.1.4Activity实例
@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//设置当前Activity界面布局setContentView(R.layout.main);textview=(TextView)findViewById(R.);//通过findViewById方法来获得实例c=(TextView)findViewById(R.id.number);b=(Button)findViewById(R.id.button);b.setOnClickListener(newOnClickListener(){//设置单击监听器publicvoidonClick(Viewv){//获得输入的值Stringstr=textview.getText().toString();Stringstr1=c.getText().toString();
5.1.4Activity实例//将用户名和学号添加到BundleBundledata=newBundle();data.putString("name",str);data.putString("number",str1);//实例化IntentIntentintent=newIntent(Test1Activity.this,test2.class);//为Intent添加Bundleintent.putExtra("name",str);intent.putExtra("number",str1);//启动ActivitystartActivity(intent);
}
});
}}5.1.4Activity实例Test2.java
作用:从Intent中获得需要显示name的值,并给TextView赋值。packagetju.android;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.TextView;publicclasstest2extendsActivity{privateTextViewtv2;privateTextViewtv3;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.test2);tv2=(TextView)findViewById(R.id.edittext2);5.1.4Activity实例tv3=(TextView)findViewById(R.id.edittext3);//获得IntentIntentintent=getIntent();//从Intent中获得Bundle对象Bundleb=intent.getExtras();//从Bundle中获得用户名和学号Stringname=b.getString("name");Stringnumber=b.getString("number");//给TextView赋值tv2.setText(name);tv3.setText(number);}}5.1.4Activity实例4.修改AndroidManifest.xml文件比较重要的一步啦,修改AndroidManifest.xml文件(将将新增的Activity,test2)注册一下,代码如下<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package="tju.android"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"/><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name">5.1.4Activity实例
<activityandroid:name=".Test1Activity"android:label="@string/app_name">
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年饭店业主权转让协议
- 2024年重庆股权转让协议精简
- 2024年冬季道路扫雪服务承包协议
- 2024届安徽池州市高三年级寒假验收考试数学试题试卷
- 2023-2024学年浙江省效实中学高三下期末教学检测试题数学试题试卷
- 化服务交易结算协议模板2024
- 2024年度装修项目协议样本
- 2024虾池养殖权承包协议示例
- 2024挂靠项目管理协议样本集萃
- 2024年天然气服务协议范例
- 广东省2024-2025学年高三上学期10月份联考历史试卷 - 副本
- 2024-2030年中国软件测试行业现状分析及投资风险预测报告
- 2024-2030年中国花青素市场销售状况与消费趋势预测报告
- 旅馆业设施布局与室内设计考核试卷
- 2024年消防知识竞赛考试题库300题(含答案)
- 2024中国船舶报社公开招聘采编人员1人高频难、易错点500题模拟试题附带答案详解
- 中图版2024-2025学年八年级地理上册期中卷含答案
- 室内装修投标方案(技术方案)
- 喷漆安全管理制度
- 山东科学技术出版社小学一年级上册综合实践活动教案
- 2024-2030年中国市政公用工程行业市场发展分析及发展潜力与投资研究报告
评论
0/150
提交评论