当前位置: 首页>编程语言>正文

Android建一个项目 创建一个android项目

1.2 创建Android项目





一个Android项目包含了生产Android应用所需要的全部源代码文件,使用Android SDK Tools可以很容易地创建一个新的Android项目,同时创建好项目默认的目录和文件。

本小节介绍如何使用Eclipse(已安装ADT插件)或SDK Tools命令行来创建一个新的项目。

1.2.1 创建一个新的android项目

  1. 点击Eclipse工具栏的New按钮-other.
  2. 在弹出的窗口中打开Android文件夹,选择Android Application Project,点击Next.

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android建一个项目,第1张



  1. 填写如下图弹出的表格: 
  • Application Name:此处填写想呈现给用户的应用名称,此处我们使用“CalculatorOfWoNum".
  • Project Name:是项目的文件夹名称和在Eclipse中显示的名称.
  • Package Name:是应用的包命名空间(同Java的包的概念),该包名在同一Android系统上所有已安装的应用中具有唯一性,因此,通常使用你所在公司组织或发布实体的反向域名作为包名的开始是一个很好的选择。此处可以使用"com.example.calculatorofwonum" ,但是你不能在 Google Play上发布使用 "com.example"作为包名的应用.
  • Minimum Required SDK:用API level表示你的应用支持的最低Android版本,为了支持尽可能多的设备,你应该设置为能支持你应用核心功能的最低API版本。如果某些非核心功能仅在较高版本的API支持,你可以只在支持这些功能的版本上开启它们(参考兼容不同的系统版本),此处采用默认值即可。
  • Target SDK:表示你测试过你的应用支持的最高Android版本(同样用API level表示).当Android发布最新版本后,你应该在最新版本的Android测试你的应用同时更新target sdk到Android最新版本,以便充分利用Android新版本的特性。
  • Compile With:是你的应用将要编译的目标Android版本,此处默认为你的SDK已安装的最新Android版本(目前应该是4.1或更高版本,如果你没有安装一个可用Android版本,就要先用SDK Manager来完成安装),你仍然可以使用较老的版本编译项目,但把该值设为最新版本,使你可以使用Android的最新特性,同时可以在最新的设备上优化应用来提高用户体验。
  • Theme:为你的应用指定界面风格,此处采用默认值即可。

点击Next

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android建一个项目_02,第2张



create custom launcher icon:是否创建启动图标



create activity:是否创建活动



create project workspace:项目存放地址



mark this project as a library这个实例是不是lib函数库





  2.接下来的窗口配置项目,保持默认值即可,点击Next。



Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android建一个项目_03,第3张



  3.这一步帮助你给你的应用创建一个启动图标,你也可以通过几种方式来自定义应用启动图标,通过用工具为各种屏幕密度的屏幕各创建一个对应图标。但在发布应用之前,应确保你设计的图标符合Iconography中规定的设计规范。 点击Next。



Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_android_04,第4张



(1)blank activity基本型



(2)blank activity with fragment基本画面切割式



(3)empty activity空白的专案



(4)fullscreen activity全画面



(5)master detail flow画面切割式



(6)navigation drawer activity导航模式页面



(7)tabbed activity可左右切换的页面



创建完成后,就会成为对应的图,如图2-8



Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android建一个项目_05,第5张



  4.这一步为默认的入口Activity选择一个模板,此处选择BlankActivity,然后点击Next。



Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_权重_06,第6张



activity name:表示给新建的空白活动起的名字,保留mainactivity这个名字



layout name:针对这个活动的布局文件名字,保留activity_name这个名字



  5.这一步保持Activitiy的默认配置即可。点击finish。



到此为止,你的Android项目已经是一个基本的“CalculatorOfWoNum”程序,包含了一些默认的文件。要运行它,继续下个小节的学习。完成新项目的创建工作,将出现以下界面,如图。

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_权重_07,第7张

1.2.2使用命令行创建项目(方法二,了解下即可)

创建项目还有另一种方式,就是使用命令行去创建项目,方式二。

如果你没有使用Eclipse + ADT开发Android项目,你可以在命令行使用SDK提供的tools来创建一个Android项目。

  • 打开命令行切换到SDK根目录的tools/目录下;
  • 执行:
android list targets

会在屏幕上打印出所有你的Android SDK中下载好的可用Android platforms,找到你想要创建项目的目标platform,记录该platform对应的Id,推荐你使用最新的platform。你仍可以使你的应用支持较老版本的platform,但设置为最新版本允许你为最新的Android设备优化你的应用。 如果你没有看到任何可用的platform,你需要使用Android SDK Manager完成下载安装,参见 Adding Platforms and Packages。

  • 执行:
android create project --target <target-id> --name MyFirstApp \
--path <path-to-workspace>/MyFirstApp --activity MainActivity \
--package com.example.myfirstapp

替换<target-id>为上一步记录好的Id,替换<path-to-workspace>为你想要保存项目的路径。

到此为止,你的Android项目已经是一个基本的“Hello World”程序,包含了一些默认的文件。要运行它,继续下个小节的学习。

1.2.3 执行Android程序

(1)在真实设备上运行



1、首先将手机设置为调试模式



方法:设置——应用程序——开发——USB调试,打上√即可



Note: 从Android4.2开始,开发人员选项在默认情况下是隐藏的,想让它可见,可以去设置>关于手机(或者关于设备)点击版本号七次。再返回就能找到开发人员选项了。



2、用数据线连接至电脑,在电脑上安装豌豆荚,此时豌豆荚会帮你安装驱动,安装好后豌豆荚就可以连接上手机了





3、用adb命令测试是否有装置已连接



命令:adb devices



Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_android_08,第8张





看到已经有一个装置了,即为我们连接的真机



注意:有的人可能提示找不到这个adb命令,这是因为你没有将其加入到path环境变量中,或者你进入sdk下的tools目录在运行此命令就不会报错,或者将tools路径加入到环境变量中,当然推荐第二种方法了


问题记录:


有的时候可能会出现下面的错误:



adb server is out of date.  killing...  



ADB server didn't ACK  * 
failed to start daemon *





究其源就是adb server没启动

到stackoverflow上查了一下 经过分析整理如下:


原来adb server 端口绑定失败

继续查看到底是哪个程序给占用了



C:\Users\xxxxxx>netstat -ano | findstr "5037"  
      TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       4236  
      TCP    127.0.0.1:5037         127.0.0.1:49422        ESTABLISHED     4236  
      TCP    127.0.0.1:49422        127.0.0.1:5037         ESTABLISHED     3840



打开任务管理器kill掉PID为4236 的这个进程。ok,至此问题解决了



4、开始在真机上调试



在eclipse中选择Run——Run Configurations,在左边选择好你要调试的工程,然后将右边切换至Target标签下




 

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_android_09,第9张



 



这有三个选项,如果你想连接至真机调试,可选第一个或第二个,这里我直接选择第一个,点击Run,等待几秒钟出现以下界面


 

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_android_10,第10张





在这里就看到了我们的真机装置了,选择上面的真机OK即可在真机上运行程序了。





用Eclipse在设备里运行程序:

  1. 打开项目文件,点击工具栏里的Run按钮。
  2. 在 Run as 弹出窗口中,选择 Android Application 然后点击 OK。

Eclipse 会把应用程序安装到你的设备中并启动应用程序。

或者也可以利用命令行安装运行你的应用程序。

  1. 命令行切换当前目录到Andriod项目的根目录,执行:
ant debug
  1. 确保 Android SDK里的 platform-tools/ 路径已经添加到环境变量的PATH中,执行:
adb install bin/MyFirstApp-debug.apk
  1. 在你的Android设备中找到 MyFirstActivity,点击打开。

以上就是创建并在设备上运行一个应用的全部过程!想要开始开发,点击next lesson。

(2)在模拟器上运行

无论你是用 Eclipse 还是命令行,在模拟器中运行程序首先要创建一个 Android Virtual Device (AVD)。AVD 是对 Android 模拟器的配置,可以让你模拟不同的设备。

创建一个 AVD:

  1. 启动 Android Virtual Device Manager(AVD Manager)的两种方式:
  • 用Eclipse, 点击工具栏里面Android Virtual Device Manager。
  • 在命令行窗口中,把当前目录切换到<sdk>/tools/
android avd
  1. 在 Android Virtual Device Manager 面板中,点击New.
  2. 填写AVD的详细信息,包括名字,平台版本,SD卡大小以及屏幕皮肤(默认是HVGA)。
  3. 点击 Create AVD.
  4. 在Android Virtual Device Manager 选中创建的新AVD,点击 Start。
  5. 在模拟器启动完毕后,解锁模拟器的屏幕。

接下来就可以像前边讲过的一样用Eclipse或命令行来向模拟器安装运行你的应用程序了。

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android建一个项目_11,第11张





1.1.3 建立简单的用户界面

项目名MyFristAPP-res-layout-main.xml,用于用户界面描述。

创建一个LinearLayout

从目录res/layout里打开fragment_main.xml文件。

Note:在eclipse中,当你打开布局文件的时候,首先看到的是图形化布局编辑器,这个编辑页是使用所见即所得的工具帮助你创建布局。对于本课来说,你是直接在XML里进行操作,因此点击屏幕下方的fragment_main.xml标签进入XML编辑页。

你创建项目时选择的Blank Activity With Fragment 模板生成的fragment_main.xml文件包含一个RelativeLayout的根View和一个TextView的子View。

首先,删除<TextView>标签并修改<RelativeLayout>为 <LinearLayout>,然后添加android:orientation 属性并设置该属性为horizontal,修改后结果如下:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ></LinearLayout>

LinearLayout是ViewGroup的一个子类,用于放置水平或者垂直放置子视图的部件,由属性android:orientation来设定方向。LinearLayout里的子布局按照XML里定义的顺序向显示在屏幕上。

另外的两个属性android:layout_width和android:layout_height,对于所有的Views都需要对这两个属性进行设置来指定尺寸。

在这里因为LinearLayout是整个视图的根布局,所以对于宽和高都应该是充满整个屏幕的,通过指定width 和 height属性为"match_parent"。该值表示子View扩张自己width和height来匹配父控件的width和height。

想要获得更多关于布局属性的信息,请参照XML布局向导。

添加一个文本输入框

在LinearLayout里添加一个EditText元素就可以创建一个用户可编辑的文本框,和其它View一样,你需要设置XML里的某些属性来指定EditText的具体功能,下边是你应该在线性布局里指定的一些属性元素:

<EditTextandroid:id="@+id/edit_message"android:layout_width="wrap_content"android:layout_height="wrap_content"android:hint="@string/edit_message" />

属性说明:

android:id

这里定义的是View的唯一标示符,你可以在程序的代码里进行引用,你可以对这个类进行读和修改的操作(在下一课里将会用到)

当你想从XML里使用资源类的时候必须使用@符号,紧随@之后的是资源的类型(这里是id),然后是资源的名字(这里使用的是edit_message)。(其他的资源可以使用相同的名字只要他们不是相同的资源类型,例如:字符串资源可以使用相同的名字)。

+号只是当你第一次定义一个资源ID的时候需要。这里是告诉SDK此资源ID需要被创建出来。在应用程序被编译之后,SDK就可以直接使用ID值,edit_message是在项目gen/R.java文件中创建一个新的标示符,这个标示符就和EditText关联起来了。一旦资源ID被创建了,其他资源如果引用这个ID就不再需要+号了。这里是唯一一个需要+号的属性。

android:layout_width 和android:layout_height

对于宽和高不建议指定具体的大小,使用wrap_content指定之后,这个视图只是占据内容大小的空间。如果你使用了match_parent,这时EditText将会布满整个屏幕,因为它将适应父布局的大小。想要看到更多信息,请参考 布局向导。

android:hint

当文本框为空的时候,会默认显示这个字符串。对于字符串@string/edit_message的值所引用的资源应该是定义在单独的文件里,而不是直接使用字符串。因为使用的是值是存在的资源,所以不需要使用+号。然而,由于你还没有定义字符串的值,所以在添加@string/edit_message时候会出现编译错误。下边你可以定义字符串资源值来去除这个错误。

Note: 该字符串资源与id使用了相同的名称(edit_message)。然而,对于资源的引用是区分类型的(比如id和字符串),因此,使用相同的名称不会引起冲突。

增加字符串资源

当你在用户界面定义一个文本的时候,你应该把每一个文本字符串列入资源文件。对于所有字符串值,字符串资源能够单独的修改,在资源文件里你可以很容易的找到并且做出相应的修改。通过选择定义每个字符串,还允许您对不同语言本地化应用程序。

默认情况下,在res/values/string.xml里,你的Android项目包含一个字符串资源文件。打开这个文件,删除已经存在的"hello_world"字符串,为"edit_message"增加一个供使用的字符串值。 同时在这个文件里,再给button添加一个字符串,命名为"button_send". 下边就是定义好的string.xml文件内容:

<?xml version="1.0" encoding="utf-8"?><resources><stringname="app_name">My First App</string><stringname="edit_message">Enter a message</string><stringname="button_send">Send</string><stringname="action_settings">Settings</string><stringname="title_activity_main">MainActivity</string></resources>

要想获得跟多的对于不同语言本字符串资源本地化的问题,请参考兼容不同的设备(Supporting Different Devices) 。

添加一个按钮

紧跟EditText后边,添加一个Button到布局里。

<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_send" />

宽和高被设置为"wrap_content",这时按钮占据的大小就是按钮里文本的大小。这个按钮不需要指定android:id的属性,因为在Activity代码里不被引用到。

让输入框充满整个屏幕的宽度

当前EditText和Button部件只是适应了他们各自内容的大小,如下图所示:

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_android_12,第12张

这样设置对按钮来说很合适,但是对于文本框来说就不太好了,因为用户可能输入更长的文本内容。因此如果能够占满整个屏幕宽度会更好。LinearLayout使用权重的属性来达到这个目的,你可以使用android:layout_weight属性来设置。

你可以根据每一个部件所占的空间来指定权重值的大小,它的总数是有同级别的部件来决定的。就类似于饮料的成分配方:“两份伏特加酒,一份咖啡利口酒”,意思就是这个酒中伏特加酒占三分之二。例如,你设置一个View的权重是2,另一个View的权重是1,那么总数就是3,这时第一个View占据2/3的空间,第二个占据1/3的空间。如果你再加入第三个View,权重设为1,那么第一个View(权重为2的)会占据1/2的空间,剩余的另外两个View各占1/4。(请注意,使用权重的前提一般是给View的宽或者高的大小设置为0dp,然后系统根据上面的权重规则来计算View应该占据的空间。但是很多情况下,如果给View设置了match_parent的属性,那么上面计算权重时则不是通常的正比,而是反比,也就是权重值大的反而占据空间小)。

对于所有的View默认的权重是0,如果你只设置了一个View的权重大于0,那么这个View将占据除去别的View本身占据的空间的的所有剩余空间。因此这里设置EditText的权重为1,使其能够占据除了按钮之外的所有空间。

<EditTextandroid:layout_weight="1"... />

为了提升布局的效率,在设置权重的时候,你应该把EditText的宽度设置为0dp。如果你设置为"wrap_content"作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时的因为你设置了权重,所以系统自动会占据剩余空间,EditText的宽度最终成了不起作用的属性。

<EditTextandroid:layout_weight="1"android:layout_width="0dp"... />

下图展示了设置权重时候的结果

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android_13,第13张

现在看一下完整的布局文件内容:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><EditTextandroid:id="@+id/edit_message"android:layout_weight="1"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="@string/edit_message" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button_send" /></LinearLayout>

整个布局默认被Activity.html" target="_blank">Activity类使用,Activity类是在你创建一个项目的时候SDK工具自动生成的,你可以直接运行app查看运行结果:

在Eclipse里,点击工具栏里的Run按钮

或者使用命令行,进入你项目的根目录直接执行

ant debug
adb install bin/MyFirstApp-debug.apk

继续下一小节学习有关怎么对按钮做出相应,同时读取文本里的内容,启动另外一个Activity,以及更多信息。





1.1.4 启动其他的Activity

编写:yuanfentiank789 - 原文:http://developer.android.com/training/basics/firstapp/starting-activity.html

在完成上一课(建立简单的用户界面)后,你已经拥有了显示一个activity(唯一屏幕)的app(应用),并且这个activity包含了一个文本字段和一个按钮。 在这节课中,你将会添加一些新的代码到MainActivity中,当用户点击发送(Send)按钮时启动一个新的activity。

响应Send(发送)按钮

响应按钮的on-click(点击)事件,打开fragment_main.xml布局文件然后在Button(按钮)元素中添加android:onclick属性:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

android:onclick属性的值"sendMessage"就是当用户点击你屏幕按钮时触发方法的名字。

添加相应的方法在MainActivity类中:

/** 当用户点击按钮时会被调用 */
publicvoidsendMessage(View view){
    // 响应按钮的事件处理逻辑
}

请注意,为了让系统能够将这个方法(你刚在MyFirstActivity中添加的sendMessage方法)与在android:onClick属性中提供的方法名字匹配,它们的名字必须一致,特别是,这个方法必须满足以下条件:

  • 公共的
  • 没有返回值
  • 有唯一的视图(View)参数(这个视图就是将被点击的视图)

接下来,你可以在这个方法中编写读取文本内容的代码,并将该内容传到另一个Activity。

构建一个Intent

Intent是在不同组件中提供运行时连接的对象(比如两个Activity)。Intent代表一个应用"想去做什么事",你可以用它做各种各样的任务,不过大部分的时候他们被用来启动另一个Activity。

在sendMessage()方法中创建一个Intent并启动名为DisplayMessageActivity的Activity:

Intent intent = new Intent(this, DisplayMessageActivity.class);

在这之前你需要导入Intent类:

import android.content.Intent;

Tip:在Eclipse中,按Ctrl + Shift + O 可以导入缺失的类(在Mac中使用Cmd + Shift + O )

在这个Intent构造函数中有两个参数:

  • 第一个参数是Context(之所有可以用this是因为当前Activity.html" target="_blank">Activity(MyFirstActivity)是Context的子类)
  • 系统需要传递Intent的应用组件的class对象(在这个案例中,为应该被启动的activity)。

Note:如果你正在使用的是类似Eclipse的IDE,这里对DisplayMessageActivity的引用会报错,因为这个类还不存在;暂时先忽略这个错误,你很快就要去创建这个类了。

一个Intent(意图)不仅允许你启动另一个Activity,同时也可以传递一个数据包到另一个Activity,在sendMessage()方法里用Activity.html#findViewById(int)">findViewById()方法得到EditText元素,然后将它的文本信息添加到Intent(意图):

Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);

Note:你需要导入android.widget.EditText类,再定义EXTRA_MESSAGE的值。

Intent可以携带各种数据类型的集合的key-value附加对,称作extras。 putExtra()方法把键名作为第一个参数,把值作为第二个参数。

为了让下一个activity能够查询额外数据(extra data),应该用公共常量为Intent定义键。所以把EXTRA_MESSAGE定义添加到MainActivity类:

publicclassMainActivityextendsActionBarActivity {
    publicfinalstatic String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    ...
}

通常使用应用程序包名作为前缀来定义意图键是很好的做法。在应用程序与其他应用程序进行交互时仍可以确保意图键唯一。

启动第二个Activity

启动一个Activity,你只需要调用Activity.html#startActivity(android.content.Intent)">startActivity()方法然后传入你的Intent(意图),系统接收到你的请求后会实例化在Intent中指定的Activity。

包含新的代码,被Send(发送)按钮调用的完整sendMessage()方法现在就像这样:

/** Called when the user clicks the Send button */
publicvoidsendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

现在你需要去创建一个DisplayMessageActivity类使程序能够执行起来。

创建第二个Activity

使用Eclipse创建新的Activity:

  1. 在工具栏点击新建
  2. 在弹出窗口打开Android文件夹,选择Android Activity然后点击Next。
  3. 选择Blank Activity
  4. 填写Activity详细信息:
  • Project:MyFirstApp
  • Activity Name:DisplayMessageActivity
  • Layout Name:activity_display_message
  • Fragment Layout Name:fragment_display_message
  • Title:My Message
  • Hierarchial Parent:com.example.myfirstapp.MainActivity
  • Navigation Type:无

单击Finish。

如果使用的是不同的IDE或者命令行工具,需要在项目的 src/目录创建一个名为DisplayMessageActivity.java,与MainActivity.java同目录的文件。

打开DisplayMessageActivity.java文件,如果该文件用Eclipse创建,那么:

  • 此类已经包含了所需onCreate()的默认实现,稍后需要更新此实现方法。
  • 另外还有一个onCreateOptionsMenu()实现方式,由于这个应用程序并不需要所以可以直接删除。
  • 还有onOptionsItemSelected()实现方式,它可以处理ActionBar的Up操作,请保持目前演示代码,无需改动。
  • 还有一个继承Fragment的PlaceholderFragment

Fragments把应用程序的功能和用户界面分解成可以复用的模块。想了解更Fragments信息,请参阅Fragments API Guide,此activity的最终版本不使用Fragment。

Note:如果你用的不是最新版本的ADT插件,你的activity看起来会不一样,请确保安装了最新的版本来完成教程。

DisplayMessageActivity类现在应该是这样的:

publicclassDisplayMessageActivityextendsActionBarActivity {

    @Override
    protectedvoidonCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

    @Override
    publicbooleanonOptionsItemSelected(MenuItem item){
        // 处理ActionBar的条目按键。actionbar会自动处理Home/Up按钮上的事件,// 你只要在AndroidManifest.xml指定一个父Activity即可。int id = item.getItemId();
        if (id == R.id.action_settings) {
            returntrue;
        }
        returnsuper.onOptionsItemSelected(item);
    }

    /**
     * 一个包含简单的View的占位用的碎片。
     */
    publicstaticclassPlaceholderFragmentextendsFragment {

        publicPlaceholderFragment(){ }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup,
                  Bundle savedInstanceState){
              View rootView = inflater.inflate(R.layout.fragment_display_message,
                     , false);
              return rootView;
        }
    }
}

如果使用IDE不是Eclipse,参照用上述代码来更新你的DisplayMessageActivity。

Activity所有子类都必须实现onCreate()方法。创建activity的实例时系统会调用该方式,此时必须用Activity.html#setContentView(android.view.View)">setContentView()来定义Activity布局,以对Activity进行初始化。

Note:如果你使用的IDE不是Eclipse,你的工程中可能不会包含由setContentView()请求的activity_display_message

添加标题字符串

如果你使用Eclipse开发,则可以跳过本部分,因为模板提供了新activity的标题字符串。如果你使用的IDE不是Eclipse,需要把新Activity的标题添加到strings.xml文件:

<resources>
    ...
    <string name="title_activity_display_message">My Message</string></resources>

将Activity加入manifest(清单)文件

所有Activity必须使用 activity-element.html" target="_blank"><activity>元素在AndroidManifest.xml清单文件声明。

如果使用Eclipse创建Activity,则会自动在AndroidManifest.xml配置好对应activity元素,其它IDE需要手动配置,最终结果应该看起来这样:

<application ... >
    ...
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" ><meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" /></activity></application>

android:parentActivityName属性声明了在应用程序中该Activity逻辑层面的父类Activity的名称。 系统使用此值来实现默认导航操作,比如在Android 4.1(API level 16)或者更高版本中的Up navigation。 使用Support Library,如上所示的<meta-data>元素可以为安卓旧版本提供相同功能。

Note:你的Android SDK应该已经包含了最新的Android Support Library,它包含在ADT插件中。但如果你用的是别的IDE你就需要在 Adding Platforms and Packages 中安装。当在Eclipse中使用模板时,Support Library会自动加入你的工程中(在Android Dependencies中你可以看到相应的JAR文件)。如果不使用Eclipse,你就需要手动将Support Library添加到你的工程中,参考setting up the Support Library。

如果正在使用Eclipse开发,现在可以运行应用程序了。 点击发送按钮启动第二个Activity,但它采用的是模板提供的"Hello world"布局,稍后你可以自己更新该布局。因此使用其它IDE也不用担心,因为应用程序尚未编译。

获取Intent

不管用户导航到哪,每一个Activity是被Intent调用,你都可以在启动的Activity中通过Activity.html#getIntent()">getIntent()方法得到Intent以及Intent包含的数据。

在DisplayMessageActivity类的onCreate()方法中,得到intent以及MainActivity提供的附加信息:

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

显示信息

要在屏幕上显示信息,创建一个TextView部件,并且使用setText()设置它的值,然后通过setContentView()方法将TextView作为root(根)视图添加到Activity的布局。

DisplayMessageActivity完整的onCreate()方法现在看起来如下:

@Override
publicvoidonCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    // Get the message from the intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}

现在你可以运行app,在文本中输入信息,点击Send(发送)按钮,ok,现在就可以在第二Activity上看到发送过来信息了。如图:

Android建一个项目 创建一个android项目,Android建一个项目 创建一个android项目_Android_14,第14张

到此为止,你已经创建好你的第一个Android应用了!


https://www.xamrdz.com/lan/57v1957352.html

相关文章: