Android课程---Activity的创建
2016-03-18 19:46
405 查看
一、为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能。新的Activity的最基本的框架代码如下所示:
基本的Activity类代表一个空的屏幕,它没有什么大用,所以,首要的事情就是你用Views和layouts来填充UI。
Activity的UI都是由Views来创建的。Views是UI控件,显示数据和提供用户交互。Android提供了一些layout类,称作ViewGroups,它可以容纳多个View来帮助你设计复杂的UI。
在第4章中会详细描述View和ViewGroups,并且讲解了哪些可用,如何用以及怎样创建自定义的Views和layouts。
为Activity指定UI,请在Activity的onCreate方法中调用setContentView方法。
在这个代码片段里,使用了MyView的简单实例来作为Activity的UI:
多数情况下,你都想使用较为复杂的UI设计。你可以在代码里使用ViewGroups来创建布局,或者你可以利用标准Android的便利传递一个外部已经定义的layout的资源ID,如下面的代码片段所示:
为了能在应用程序中使用一个Activity,你需要在manifest中注册它。在application节点添加一个新的activity标签;activity里包含label、icon、permissions和themes等元数据。没有相应的activity标签的Activity不能被启动。
接下来的XML片段显示了如何为我刚创建的MyActivity类添加一个节点:
在activity标签里,你可以增加intent-filter节点来指明你的Activity监听和响应哪种意图。每个IntentFilter可以定义一个或多个action和categories。Intent和IntentFilter会在第5章详细描述,但是它对一个作为主要启动程序的Activity没有什么价值。它必须包含一个IntentFilter来监听MAIN动作和LAUNCHER种类,如下面高亮度的代码片段所示:
二、多个Activity之间的关系
多个Activity之间通过Intent来传递信息
Intent的基本作用
一个Intent对象包含了一组信息
(1)Componentname指定要启动啊一个Activity
(2)Action指定的Activity要做什么
(3)Data一个Activity向另一个Activity中传递怎样的数据
(4)Extras接收者Activity可以从Intent中取出发送方Activity的键值对
(5)Categories
(6)Flags
Intent可以用于两个Activity之间传递信息,这两个Activity不一定是一个应用程序的两个界面,也可是不同的两个应用程序的界面。主要是一些系统调用会比较常用这种方式去调用。
下面来看一个实例
Activity_02.java
packagecsdn.Activity2;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassActivity_02extendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateButtonmyButton=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton=(Button)findViewById(R.id.myButton);
myButton.setOnClickListener(newMyButtonListener());
}
classMyButtonListenerimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
//生成一个Intent对象
Intentintent=newIntent();
intent.putExtra("testIntent","123");
intent.setClass(Activity_02.this,OthersActivity.class);
Activity_02.this.startActivity(intent);
}
}
}
OtherActivity.java文件
packagecom.paad.myapplication; importandroid.app.Activity; importandroid.os.Bundle; publicclassMyActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(Bundleicicle){ super.onCreate(icicle); } }
基本的Activity类代表一个空的屏幕,它没有什么大用,所以,首要的事情就是你用Views和layouts来填充UI。
Activity的UI都是由Views来创建的。Views是UI控件,显示数据和提供用户交互。Android提供了一些layout类,称作ViewGroups,它可以容纳多个View来帮助你设计复杂的UI。
在第4章中会详细描述View和ViewGroups,并且讲解了哪些可用,如何用以及怎样创建自定义的Views和layouts。
为Activity指定UI,请在Activity的onCreate方法中调用setContentView方法。
在这个代码片段里,使用了MyView的简单实例来作为Activity的UI:
@Override publicvoidonCreate(Bundleicicle){ super.onCreate(icicle); MyViewmyView=newMyView(this); setContentView(myView); }
多数情况下,你都想使用较为复杂的UI设计。你可以在代码里使用ViewGroups来创建布局,或者你可以利用标准Android的便利传递一个外部已经定义的layout的资源ID,如下面的代码片段所示:
@Override publicvoidonCreate(Bundleicicle){ super.onCreate(icicle); setContentView(R.layout.main); }
为了能在应用程序中使用一个Activity,你需要在manifest中注册它。在application节点添加一个新的activity标签;activity里包含label、icon、permissions和themes等元数据。没有相应的activity标签的Activity不能被启动。
接下来的XML片段显示了如何为我刚创建的MyActivity类添加一个节点:
<activityandroid:label=”@string/app_name” android:name=”.MyActivity”> <intent-filter> <actionandroid:name=”android.intent.action.MAIN”/> <categoryandroid:name=”android.intent.category.LAUNCHER”/> </intent-filter> </activity>
在activity标签里,你可以增加intent-filter节点来指明你的Activity监听和响应哪种意图。每个IntentFilter可以定义一个或多个action和categories。Intent和IntentFilter会在第5章详细描述,但是它对一个作为主要启动程序的Activity没有什么价值。它必须包含一个IntentFilter来监听MAIN动作和LAUNCHER种类,如下面高亮度的代码片段所示:
<activityandroid:label=”@string/app_name” android:name=”.MyActivity”> <intent-filter> <actionandroid:name=”android.intent.action.MAIN”/> <categoryandroid:name=”android.intent.category.LAUNCHER”/> </intent-filter> </activity>
二、多个Activity之间的关系
多个Activity之间通过Intent来传递信息
Intent的基本作用
一个Intent对象包含了一组信息
(1)Componentname指定要启动啊一个Activity
(2)Action指定的Activity要做什么
(3)Data一个Activity向另一个Activity中传递怎样的数据
(4)Extras接收者Activity可以从Intent中取出发送方Activity的键值对
(5)Categories
(6)Flags
Intent可以用于两个Activity之间传递信息,这两个Activity不一定是一个应用程序的两个界面,也可是不同的两个应用程序的界面。主要是一些系统调用会比较常用这种方式去调用。
下面来看一个实例
Activity_02.java
packagecsdn.Activity2;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
publicclassActivity_02extendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateButtonmyButton=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton=(Button)findViewById(R.id.myButton);
myButton.setOnClickListener(newMyButtonListener());
}
classMyButtonListenerimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
//生成一个Intent对象
Intentintent=newIntent();
intent.putExtra("testIntent","123");
intent.setClass(Activity_02.this,OthersActivity.class);
Activity_02.this.startActivity(intent);
}
}
}
OtherActivity.java文件
//------------------------------------------------OtherActivity.java------------------------------------
packagecsdn.Activity2;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassOthersActivityextendsActivity{
privateTextViewmyTextView=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setContentView(R.layout.others);
Intentintent=getIntent();
Stringvalue=intent.getStringExtra("testIntent");
myTextView=(TextView)findViewById(R.id.myTextView);
//myTextView.setText(R.string.other);
myTextView.setText(value);
}
}
相关文章推荐
- 【SettingsProvider】默认开启WI-FI
- Android笔记-自定义适配器
- Android中服务的生命周期与两种方式的区别
- android动画详解二 属性动画原理
- Android属性动画
- Android通讯录数据库介绍与基本操作(增删改查)
- Android系统将内置滤镜功能
- Android 知识体系
- android socket实现文件导出功能
- 搭建高质量的Android项目框架系列四
- 关于SQLite在Android开发中的知识点总结
- Android 线程模型
- 复习android 的大喇叭~~~
- 搭建高质量的Android项目框架系列三
- Android遇到No external storage available
- 搭建高质量的Android项目框架系列二
- bug_ _ android.view.WindowManager$BadTokenException: Unable to add window -- token
- Android 的画布Canvas和画笔Paint
- android日志打印代码 logcat
- 搭建高质量的Android项目框架系列一