您的位置:首页 > 移动开发 > Android开发

Android课程---Activity的创建

2016-03-18 19:46 405 查看
一、为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能。新的Activity的最基本的框架代码如下所示:

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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: