Android课程---Activity的创建
一、为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能。新的Activity的最基本的框架代码如下所示:
package com.paad.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
}
基本的Activity类代表一个空的屏幕,它没有什么大用,所以,首要的事情就是你用Views和layouts来填充UI。
Activity的UI都是由Views来创建的。Views是UI控件,显示数据和提供用户交互。Android提供了一些layout类,称作View Groups,它可以容纳多个View来帮助你设计复杂的UI。
在第4章中会详细描述View和View Groups,并且讲解了哪些可用,如何用以及怎样创建自定义的Views和layouts。
为Activity指定UI,请在Activity的onCreate方法中调用setContentView方法。
在这个代码片段里,使用了MyView的简单实例来作为Activity的UI:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
MyView myView = new MyView(this);
setContentView(myView);
}
多数情况下,你都想使用较为复杂的UI设计。你可以在代码里使用View Groups来创建布局,或者你可以利用标准Android的便利传递一个外部已经定义的layout的资源ID,如下面的代码片段所示:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
为了能在应用程序中使用一个Activity,你需要在manifest中注册它。在application节点添加一个新的activity标签;activity里包含label、icon、permissions和themes等元数据。没有相应的activity标签的Activity不能被启动。
接下来的XML片段显示了如何为我刚创建的MyActivity类添加一个节点:
<activity android:label=”@string/app_name” android:name=”.MyActivity”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter> </activity>
在activity标签里,你可以增加intent-filter节点来指明你的Activity监听和响应哪种意图。每个Intent Filter可以定义一个或多个action和categories。Intent和Intent Filter会在第5章详细描述,但是它对一个作为主要启动程序的Activity没有什么价值。它必须包含一个Intent Filter来监听MAIN动作和LAUNCHER种类,如下面高亮度的代码片段所示:
<activity android:label=”@string/app_name” android:name=”.MyActivity”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter> </activity>
二、多个Activity 之间的关系
多个Activity之间通过Intent来传递信息
Intent 的基本作用
一个 Intent 对象包含了一组信息
(1) Component name 指定要启动啊一个 Activity
(2) Action 指定的Activity 要做什么
(3) Data 一个Activity 向另一个Activity 中传递怎样的数据
(4) Extras 接收者Activity 可以从 Intent 中取出发送方 Activity 的键值对
(5) Categories
(6) Flags
Intent 可以用于两个Activity 之间传递信息,这两个Activity 不一定是一个应用程序的两个界面,也可是不同的两个应用程序的界面。主要是一些系统调用会比较常用这种方式去调用。
下面来看一个实例
Activity_02.java
- package csdn.Activity2;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class Activity_02 extends Activity {
- /** Called when the activity is first created. */
- private Button myButton = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- myButton = (Button) findViewById(R.id.myButton);
- myButton.setOnClickListener(new MyButtonListener());
- }
- class MyButtonListener implements OnClickListener {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 生成一个Intent对象
- Intent intent = new Intent();
- intent.putExtra("testIntent", "123");
- intent.setClass(Activity_02.this, OthersActivity.class);
- Activity_02.this.startActivity(intent);
- }
- }
- }
OtherActivity.java 文件
//------------------------------------------------OtherActivity.java------------------------------------
package csdn.Activity2; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView; public class OthersActivity extends Activity {
private TextView myTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.others);
Intent intent = getIntent();
String value = intent.getStringExtra("testIntent"); myTextView = (TextView)findViewById(R.id.myTextView);
//myTextView.setText(R.string.other);
myTextView.setText(value);
} }
Android课程---Activity的创建的更多相关文章
- Android课程---Activity中保存和恢复用户状态
onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...
- Android课程---Activity 的生命周期
activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...
- Android开发--Activity的创建
1.Activity概述 Activity是android四大基本组件之一.每一个activity文件对应一个界面,一个程序由多个activity组成. 2.Android工作目录
- android之Activity的创建与关闭
Activity的启动和关闭 1.启动activity activity的启动分为两种,一种为入口activity,另一种为其他activity 在AndroidManifests进行配置,入口act ...
- Android基础Activity篇——创建一个活动(Activity)
1.创建活动 首先用AS创建一个add no activity项目名使用ActivityTest,包名为默认的com.example.activitytest 2.右击app.java.com.exa ...
- Android课程---Activity 带返回值的跳转
Activity2.java package com.hanqi.test4; import android.content.Intent; import android.os.Bundle; imp ...
- Android课程---Activity的跳转与传值(转自网上)
Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是“意图”,什么是意图呢?比如你想从这个 ...
- Android开发之Activity的创建跳转及传值
在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...
- Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)
注:本文中的recreate是指当内存不足时,Activity被回收,但再次来到此Activity时,系统重新恢复的过程.例如:当Activity A到Activity B时,如果内存不足,A被回收, ...
随机推荐
- AOP动态代理解析5-cglib代理的实现
CGLIB是一个强大的高性能的代码生成包.它广泛地被许多AOP的框架使用,例如Spring AOP和dynaop,为他们提供方法的Interception(拦截).EasyMock和jMock是通过使 ...
- hdu2255 二分图最大权配KM
KM算法:hdu2255 (大概理解了 参考博客: http://blog.csdn.net/niushuai666/article/details/7171880) 所谓交错树:就是 ...
- mac/linux常用命令
文件 创建文件: touch filename 创建目录: mkdir dirname, 创建目录及文件: mkdir -p dir/file 删除文件/目录: rm [-rf] filename 显 ...
- http://www.roncoo.com/course/view/a09d8badbce04bd380f56034f8e68be0
http://www.roncoo.com/course/view/a09d8badbce04bd380f56034f8e68be0
- docker push到本地仓库失败
开启registry的方法: docker run -d -p : -v /data/registry:/tmp/registry registry 出错内容: Error: Status tryin ...
- document.images、document.forms、doucument.links——>HTMLCollection
由于历史原因,HTMLDocument类定义了一些快捷属性来访问各种各样的节点.例如,images.forms.links等属性指向香味类似只读数组的<img>.<form>. ...
- 每天一个Linux命令---tcpdump
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头” ...
- CF# Educational Codeforces Round 3 E. Minimum spanning tree for each edge
E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...
- datanode启动不了
报如下异常:*org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.protocol.DisallowedDatano ...
- (转)Array.prototype.slice.call自解
很多框架或者库里面都会有这句的使用,最多的还是通过Array.prototype.slice.call(arguments,0)把arguments这个伪数组转换为真正的数组.但为什么可以这么做,却一 ...