怎样创建一个android程序,在src目录下创建一个activity,一个继承自service类的服

怎样创建一个android程序,在src目录下创建一个activity,一个继承自service类的服,第1张

为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能。新的Activity的最基本的框架代码如下所示: package com.paad.myapplication import android.app.Activityimport android.os.Bundlepublic class MyActivity extends Activity {/** Called when the activity is first created. */@Overridepublic 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: @Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle)MyView myView = new MyView(this)setContentView(myView)} 多数情况下,你都想使用较为复杂的UI设计。你可以在代码里使用View Groups来创建布局,或者你可以利用标准Android的便利传递一个外部已经定义的layout的资源ID,如下面的代码片段所示: @Overridepublic 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的步骤 

1 新建一个Android工程,起名为ActivityTest   将自动创建一个Activity选项勾选去掉 File-New-Android Application—图1

设置Application Name,PackageName.点击Next-图2

将Create activity选项去掉,如上图,点击Next,Next,Finish

2 在Src文件中创建一个包,起名为com.example.activitytest,此包名与图1中包名一致。

在包下新建一个.class类,起名为Activity01 图3

在src中点击右键,New—Package—图4,

在包设置中,填写包名称,点击Finish。图5

在包上点击右键,New-Class

2 填写Activity名称。点击Finish。

3 在源文件中Activity01继承Activity,并复写onCreate方法(使用Alt+/导航键,使用Source/override method)

在创建好的文件中,使Activity01 extends Activity, 在提示中选择    Import android.app.Activity.

在Activity类中点击右键,选择source—Override/Implement Methods,选择onCreate(Bundle),点击ok.

4 在AndroidManifest.xml文件中注册Activity,并设置为MainActivity。   打开AndroidManifest.xml文件

在<application></application>中添加<activity></activity>

<activity

android:name="com.test.activity.Activity01"             android:label="myFirstActivity" > <intent-filter>

<action android:name="android.intent.action.MAIN"></action>

<category android:name="android.intent.category.LAUNCHER"></category></intent-filter> </activity>

<intent-filter></intent-filter>过滤器将此Activity设置为首选项。 此时可运行程序,查看Activity的界面,界面空白。

5 在布局文件中设置简单的Button控件、EditText控件、 ViewText控件。   选择res—layout—右键—New Android xml文件

填入File名称—Finish。 在布局文件中添加控件

6 在源文件中使用setContentView函数,引用布局文件资源。  在Activity01.java文件中添加代码

7 在源文件中通过findViewById函数来引用控件,并执行相应的text改变。

8 运行程序,观察效果。

Activity的使用:

(1)通过调用startActivity(intent)启动Activity,intent用来准确的描述你要启动的Activity,或者你要进行的action,intent也可以用来携带小数据给被启动Acitivity。

当在同一个应用中间需要简单启动另一个Activity,intent明确的定义你要启动Activity类即可:

[java] view plain copy

//定义一个intent,指名要启动的activity:ToStartActivity

Intent intent =  new Intent(MainActivity.this,ToStartActivity.class)

//使用startActivity(),启动activity

startActivity(intent)

在你的应用程序需要执行一些自身没有Activity可以执行的行为时,我们可以使用手机上的其他应用程序的Activity来代替执行。比如发送一个mail、查看一张图片、搜索一个单词等等。这个里也就是Intent的重要指出,你可以定义一个intent描述你想要做的行为,等你发送给系统后,系统会启动合适的Acitivty帮你执行,如果有多个应用的Activity都可以处理此行为时,系统会让用户去选择一个。

[java] view plain copy

//跨应用从google界面搜索

Intent intent = new Intent(Intent.ACTION_WEB_SEARCH)

intent.putExtra(SearchManager.QUERY, "zy")

startActivity(intent)

当夸应用启动Activity时,在定义intent时必须要为他指定具体的acitvity,前提是此activity必须暴露在自己应用程序之外(android:exported="true"):

[java] view plain copy

Intent intent = new Intent()

//指定要启动组建完整的包名,对象名

ComponentName cn = new ComponentName("com.android.settings",

"com.android.settings.RunningServices")

intent.setComponent(cn)

// 使用context.startActivity()时需要新启一个任务

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

startActivity(intent)

(2)通过调用 startActivityForResult(intent),来接收到启动的Acitivity反馈的结果。为了接收接下来启动的Activity的结果,需要重写onActivityResult()这个回调函数。当调用的activity完成后,它将返回一个含有结果的intent给onActivityResult()处理。比如,在应用程序的Activity中,需要用户选择联系人中的一个,Activity需要得到联系人的部分信息:

[java] view plain copy 

Intent intent = new Intent(Intent.ACTION_PICK,

Contacts.People.CONTENT_URI)

//启动一个带有选择联系人返回结果的activity

startActivityForResult(intent, PICK_CONTACT_REQUEST)

这里的PICK_CONTACT_REQUEST为自定义的int型请求反馈结果代码。

[java] view plain copy 

//重新onActivityResult()用来处理接收到的返回结果

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// 如果请求requestCode成功,且请求返回的结果resultCode是我们要的PICK_CONTACT_REQUEST  

if (resultCode == Activity.RESULT_OK

&& requestCode == PICK_CONTACT_REQUEST) {

// 处理Intent返回的数据,在联系人数据库中查找联系人的名字

Cursor cursor = getContentResolver().query(data.getData(),

new String[] { Contacts.People.NAME }, null, null, null)

if (cursor.moveToFirst()) { // 如果cursor不为空,就查找出联系人的名字  

int columnIndex = cursor.getColumnIndex(Contacts.People.NAME)

String name = cursor.getString(columnIndex)

//添加其他功能

这里在要说明是onActivityResult()使用来处理返回结果的,首先要检查的是请求是否成功,然后是否有返回结果,结果是否是startActivityForResult()中所要的,如果满足,则处理通过Intent返回的数据。

4.关闭Activity:

(1)Activity可以调用finish()方法关闭自己,也可以通过调用finishActivity()的方法关闭一个独立的之前启动的Activity。

调用finish()方法关闭自己:

[java] view plain copy

//关闭Activity

finish()

(2)调用finishActivity()的方法关闭一个独立的之前启动的Activity

[java] view plain copy

//此方法用在关闭使用startActivityForResult(requestCode)启用的Activity

this.finishActivity(requestCode)

关于何时关闭一个Activity,一般由系统直接为我们管理。但是当你确认用户不用返回到此Activity时,我们调用以上方法关闭对应的Activity。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11753115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存