- 浏览: 81924 次
- 性别:
- 来自: 郑州
最新评论
-
老梦a:
...怎么用的呢,我把js和css都引入了,但是用的时候没起作 ...
在Ext的grid里实现带radio单选功能的gridList -
Mydwr:
我也正在找要实现这样的效果
在Ext的grid里实现带radio单选功能的gridList -
kkgoing:
运行不报错,但是还是有问题,index页面打不开,测试的时候插 ...
昨天整理的基于Annotation的MVC框架SSH示例 -
kjsoloho:
感谢你的肺腑之言
价值是如何放大的 -
kjsoloho:
希望继续,期待
《Android程序员指南》翻译暂停,望见谅
关键技能和概念
l 构建Activity
l 使用Android菜单
l 使用AutoCompleteTextView
本章对Views与Intents做了深入的研究,这些对于Android的新手来说是需要掌握的最重要的特性。这两个实体组成了你的前期应用的主体。你创建的每一个Activity几乎都会有多个视图,并且大部分需要条用一两个Intent。
深入学习这些主题的最佳方式是采用一种非常容易上手的方法。阅读这些主题并回顾属性列表是一种,但是独立进行代码实现是完全不同的。也就是说,就像前几章中你已经做的,你将非常频繁地利用Views和Intents构建Activity。通过构建这个应用,你会得到Views和Intents的最佳实践。
前两章通过创建简单的Activity,使用大量关于Views和Intents的基础功能,简单地介绍了Views和Intents。本章中,你会构建稍微复杂一点的Activity,即使用新Intents调用我们创建的新Activity。这些新的Activity会展示当前Android SDK版本可用的大部分视图。本章解释这些视图的基本功能,例如AutoComplete 列表和Gallery,并介绍了每个Activity对应的每个视图属性的变量。
首先,创建一个新的名为AndroidViews的Eclipse项目。用如下所示的参数创建项目:一个包名android_programmers_guide. AndroidViews,一个Activity名AndroidViews,和一个应用名AndroidViews。
完成项目创建并打开main.xml文件。从main.xml中删除Hello World!代码。创建项目和清除main.xml代码后,你就可以添加自己的代码了。
构建Activity
截止目前,你已经创建了单一Activity的应用。也就是说,你已经创建了相当简单的应用,仅仅包含一屏数据。稍等一下,思考一下你用到的上几个应用。可能他们使用了多个窗口。大部分应用使用多个窗口来收集,显示和保存数据。你的 Android应用应该也一样。
尽管你还不了解如何创建可以在Android运行的多Activity的应用,但在上一章你也得到了如何充分开发利用多Activity的提示。你使用一个新概念名为Intents来调用——并运行——核心的Android Activity。虽然这个概念在本章提出,但是和调用核心的Android Activity相比,当你调用自己创建的Activity时其执行却有所不同。
你要做的第一件事是构建Activity。然后你创建可以调用它们的Intents。当构建Activity时,你需要遵从一个三步走流程。
● 在.xml文件中创建Intent代码。
● 在.java文件中创建Intents代码。
● 利用 Intent条用Activity
一旦你创建了第一个多功能Activity,其余的就会很简单了。
在.xml文件中创建Intent代码
记住,所有Android Activity都有三个部分组成:包含代码的.java文件,保存布局的.xml文件和包的Manifest。
截止到当前,你已经使用main.xml控制一个单Activity的布局。然而,为了利用多Activity,你必须拥有多个..xml布局文件。
要创建一个新的.xml文件,打开你的Eclipse项目并浏览Package Explorer。打开res目录,右击layout文件夹,并选择New|File。
在New File对话框中,如下,命名你的文件test.xml。
布局文件创建后是空的。要让Activity一开始就顺利运行,就为test.xml文件增加下面的代码。本书为你的布局提供了范例。如果你需要,你可以简单的从已有的main.xml文件中复杂这些代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</LinearLayout>
在.java文件中创建Intent代码
再次使用Package Explorer,浏览src目录,打开它,并右击android_programmers_guide.AndroidViews包,如下所示。
再次你会在文件夹中添加一个新文件。在右击AndroidViews包后,在内容菜单选择New|File。这个文件会保存第二个Activity中的全部代码。将文件命名为test.java。现在你会有一个漂亮的新(但是空的).java文件。你仅需要在文件中添加少量的代码行就可以让它有用:
package testPackage.test;
import android.app.Activity;
import android.os.Bundle;
public class test extends Activity {
/** Called when the Activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.test);
/** This is our Test Activity
All code goes below */
}
}
注意你在setContentView方法中通过R.layout.test调用的test.xml。 这一行告诉新Activity文件使用你创建的.xml文件作为本页的布局文件。
修改AndroidManifest.xml
在Eclipse中打开你的AndroidManifest.xml文件。本书还没有详细讨论AndroidManifest.xml。AndroidManifest.xml包含对你的项目的全局设置。更重要的是,AndroidManifest.xml也包含了项目的Intent Filters。
第七章讨论过Android如何使用Intent Filters管理什么Activity能接受什么Intent。纾缓这个流程的信息保存在AndroidManifest.xml中。
你的AndroidManifest.xml现在打开了,它应该显示如下:
<activity android:name=".AndroidViews" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
现在你看到的是AndroidViews Activity的Intent Filter,主Activity在项目中创建。这个文件中,你可以添加其他任何你想让项目处理的Intent Filters。本例中,你要添加一个处理新建的Test Activity的Intent Filter。
下面就是你需要添加到AndroidManifest.xml文件中的Intent Filter代码:
<activity android:name=".Test" android:label="Test Activity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
为AndroidManifest.xml添加这段代码可以使Android将Test Activity的Intents传递到正确的位置。完整的AndroidManifest.xml文件应该看起来这样:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="android_programmers_guide.AndroidViews">
<application android:icon="@drawable/icon">
<activity android:name=".AndroidViews" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AutoComplete" android:label="AutoComplete">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
现在你的Activity可以处理Test Activity的Intent呼叫了。要创建Test Activity 的Intent call,你会使用一种类似于的在第七章中你调用手机拨号器的那种框架。下面一行代码会建立Intent:
Intent testActivity = new Intent(this, test.class);
这一行创建了一个名为testActivity的Intent。参数test.class告诉呼叫你想让Intent testActivity代表你创建的Test Activity和这个Activity相关联。
最后使用startActivity()方法,启动Test Activity:
startActivity(autocomplete);
你完成的AndroidViews.java看起来像:
package android_programmers_guide.AndroidViews;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.content.Intent;
public class AndroidViews extends Activity {
/** Called when the Activity is first created. /
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
/**Set up our Intent /
在模拟器中运行该应用。Android会启动AndroidViews Activity,然后是Test Activity。
下面一节,你会使用这些技术,创建启动多Activity的应用。每个Activity都会有一个View,你可以在里面设置不同的项。这会给你大量实践显示和操作视图的机会,如同处理Activity一样。
使用菜单
本节中,你会构建一个应用,允许用户从一些不同的视图中选择。当用户选择一个视图,包含在选择视图中的一个新的Activity就会启动。
你将使用的为用户提供选择的工具是Android Menu。看看下面的插图。当用户触发菜单按钮,菜单就会显示。
如你所见,从Android主屏选择Menu Button出现一个Wallpaper setting选项。你可以为你的主Activity创建一个相似的菜单来保存所有视图选项,供用户选择。现在,AndroidViews.java文件看起来像这样:
package android_programmers_guide.AndroidViews;
import android.app.Activity;
import android.os.Bundle;
public class AndroidViews extends Activity {
/** Called when the Activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
}
一切停当之后。你需要导入一个新包来创建目录。将android.view.Menu导入到你的AndroidViews Activity:
Import android.view.Menu;
要创建Menu,你需要覆盖Activity的onCreateOptionsMenu()方法。onCreateOptionsMenu()方法是一个布尔方法,当用户第一次选择Menu Button时会调用它。你会用该方法构建你的Menu并为它添加选择项。给AndroidViews.java添加以下代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
}
你将在onCreateOptionsMenu()内部添加代码来创建Menu。你需要添加到Menu中的项是你将在项目中创建的视图。下面就是你将添加到Menu中的视图名称列表
● AutoComplete
● Button
● CheckBox
● EditText
● RadioGroup
● Spinner
在前面创建的代码,覆盖了onCreateOptionsMenu()方法,你在Menu中传递的变量为menu。该变量代表在Android接口上创建的实际菜单项。
要为Menu添加项,你需要使用menu.add()方法。语法如下:
menu.add(<group>,<id>,<title>)
参数组用来关联菜单项。在本例中你不会使用组。然而值非常重要。参数用来判定什么菜单项被选中。最后参数标题就是在Menu中显示的文本。
为onCreateOptionsMenu()方法添加下面的代码:
menu.add(0, 0, "AutoComplete");
menu.add(0, 1, "Button");
menu.add(0, 2, "CheckBox");
menu.add(0, 3, "EditText");
menu.add(0, 4, "RadioGroup");
menu.add(0, 5, "Spinner");
完整的AndroidViews.java文件应该看起来像这样:
package android_programmers_guide.AndroidViews;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class AndroidViews extends Activity {
/** Called when the Activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 0, "AutoComplete");
menu.add(0, 1, "Button");
menu.add(0, 2, "CheckBox");
menu.add(0, 3, "EditText");
menu.add(0, 4, "RadioGroup");
menu.add(0, 5, "Spinner");
return true;
}
}
如果你照这样执行代码,你应该会看到如图8-1所示的菜单。
图8-1 拥有六个视图的菜单
这正是你想要完成的。然而,试着点击菜单中的任何项。当用户选择一个菜单项时你不会在Activity中触发任何事件。
处理菜单项的调用时你需要覆盖的方法是onOptionsItemSelected()。再次,像onCreateOptionsMenu()一样,当选择一个菜单项时,onOptionsItemSelected()也是一个需要用特定代码覆盖的布尔型的方法。覆盖的代码像这样:
@Override
public boolean onOptionsItemSelected(Menu.Item item){
}
评论
import android.view.MenuItem;
否则public boolean onOptionsItemSelected(MenuItem item){中的
MenuItem 会报错。
最后程序报错:
Error generating final archive: java.io.FileNotFoundException: C:\xxx\bin\resources.ap_ does not exist
解决方法:“Project”-“Clean”,不ok的话重启eclipse
import android.view.MenuItem;
发表评论
-
第八章 列表、菜单以及其它视图——续
2010-03-19 09:00 1453AndroidViews.java 创建这个Activity ... -
第八章 列表、菜单以及其它视图——继
2010-03-19 08:55 1795本节展示radiogroup.xml的全部代码。根据章节前面的 ... -
第八章 列表、菜单以及其它视图——后
2010-03-19 08:50 1429AndroidViews.java 创建这个Activity ... -
第八章 列表、菜单以及其它视图——下
2010-03-19 08:42 1779这里是你的完整的AndroidManifest.xml项目文件 ... -
第八章 列表、菜单以及其它视图——中
2010-03-19 08:39 1659这段代码有个问题:onOptionsItemSelected( ... -
第七章 使用Intents与Phone Dialer——下
2010-03-02 09:23 1701实现EditText视图 你需要 ... -
第七章 使用Intents与Phone Dialer——中
2010-03-02 09:16 2671为给你的Activity分配正确的权限,你首先需要知道你需要分 ... -
第七章 使用Intents与Phone Dialer——上
2010-03-02 09:07 3821第一章 使用Intents与Phone Dialer ... -
第六章 使用命令行工具与Android模拟器——下
2010-02-25 16:49 6155由于你在Android服务端安放了应用,你就可以删除它。使用命 ... -
第六章 使用命令行工具与Android模拟器——中
2010-02-25 16:38 5407<arg value="install&quo ... -
第六章 使用命令行工具与Android模拟器——上
2010-02-25 16:25 4575关键技能和概念 l 使用Android SDK ... -
第五章 应用:Hello World!——下
2010-02-24 09:07 2666还是Hello World! 本节中,你会创建另一个 ... -
第五章 应用:Hello World!——上
2010-02-24 09:00 2376关键技能和概念 l ... -
第四章 探索Android SDK
2010-02-21 22:27 6208关键技能和概念 l ... -
第三章 下载、安装Android SDK
2010-02-20 16:19 6708关键技能和概念 l ... -
第二章 下载、安装Eclipse
2010-02-20 11:28 5365关键技能和概念 l 选择一个开发环境 l ... -
第一章 Android是什么?
2010-02-20 11:17 2073关键技能和概念 l 嵌入式编程的历史 l ... -
致谢与序言
2010-02-05 16:12 1332致谢 感谢所有参与编写这本书的人,我的经纪 ... -
为什么要翻译《Android A Programmer's Guide》——《Android程序员指南》
2010-02-05 16:08 2893学习Android编程,却发现这些方面的好书很少,于是 ...
相关推荐
第八章 本篇复习——控制台应用程序和长文件名 第二篇:字体和窗口控制 第九章 第八天课程——Windows 动画:Snake 游戏 第十章 第九天课程——字体基础知识 第十一章 第十天课程——窗口控制 第十二章 第十...
总的来说,本视频教程的第8章详细介绍了Word 2010中的视图和窗口操作,旨在提升用户在处理复杂文档,尤其是对比员工规章制度文档时的工作效率。通过学习和实践,用户不仅可以熟练掌握各种视图的切换与应用,还能精通...
第8章:利用CDC实现绘图程序.ppt 第9章:Windows应用程序引擎——消息映射.ppt 第10章:用户交互对象——菜单、工具栏和状态栏.ppt 第11章:对话框及常用控件.ppt 第12章:基于文档/视图结构的程序.ppt 第13章:...
第8章Android应用程序组成 8.1深入理解Activity 8.1.1使用Intent连接Activity 8.1.2 Activity的生命周期 …… 第9章Android中的数据存储 第10章绚丽的多媒体技术 第11章Android网上冲浪 第12章Android地图服务 第4篇...
第8章Android应用程序组成 8.1深入理解Activity 8.1.1使用Intent连接Activity 8.1.2 Activity的生命周期 …… 第9章Android中的数据存储 第10章绚丽的多媒体技术 第11章Android网上冲浪 第12章Android地图服务 第4篇...
- **第八章:FAQ** —— 提供了常见问题解答,帮助解决用户在使用过程中遇到的技术难题。 #### 三、版权与免责声明 文档开头部分详细阐述了GBaseDataStudio管理工具手册的版权信息和法律声明。这些声明强调了文档...
8. **第八章:菜单和工具栏** —— 教授如何构建自定义菜单和工具栏,提升应用程序的用户体验。 9. **第九章:类和对象** —— 探索面向对象编程,理解类和对象的概念,以及如何在VFP中实现封装、继承和多态。 10....
6. **3D渲染和导出**:完成3D设计后,用户可以直接在软件内进行高质量渲染,并导出为JPG、PNG或其他格式,方便用于印刷或网络展示。 7. **3D整合**:与2D图像的无缝结合是Photoshop CS4的一大亮点,用户可以将3D...
在本项目中,"AndroidStudio————实战演练——仿美团外卖菜单"是一个专注于使用Android Studio开发的应用程序实战案例,目标是创建一个类似于美团外卖的菜单功能。这个项目涵盖了多个Android开发的关键知识点,...
本教程的第一章“感受UGNX7精彩世界——UGNX7入门”是整个学习旅程的起点,主要涵盖了以下几个关键知识点: 1. **UG NX 7.0简介**:介绍UG NX 7.0的基本功能和在工业设计中的重要性。这一版本引入了许多新特性,如...
第8章 使用ActiveX控件 第9章 Internet Explorer 4通用控件 第10章 win32内存管理 第11章 位图 第12章 windows消息处理和多线程编程 第三部分 文档视图结构 第13章 菜单、键盘、加速键、多信息 第14章...
7. **视图管理**:在UG NX 7.0中,理解和掌握视图的创建、移动、旋转以及关联方式,有助于清晰地展示设计意图,便于沟通和审查。 8. **层管理**:通过层管理,可以组织模型的不同部分,使其在设计和显示时更加有序...
本项目名为"Sliding Drawer Master",意在实现一个全方位——上下左右都能滑动的菜单效果,同时强调代码的简洁性。 在Android开发中,滑动菜单通常通过以下几种方式实现: 1. **SlidingPaneLayout**: Android SDK ...
8. 后台管理:商家管理菜单、订单、用户信息等。 三、开发流程 1. 设计原型:使用工具如Sketch、Adobe XD等设计系统界面,明确交互逻辑。 2. 数据库设计:根据需求定义数据表结构,如菜品表、订单表、用户表等。 3....
第8章 移动信息仓库——Android的数据存储操作 136 8.1 Android数据存储概述 136 8.2 轻轻地我保护——SharedPreferences存储 136 8.3 谁的文件,谁主宰——文件存储 140 8.4 打造自己的数据库存储——...
对话框高级应用 7.2.2 示例——实现无模式对话框 7.4.5 示例——使用模式属性表及向导属性表 7.5.4 示例——鼠标敏感文字 第8章 GDI+图形编程 本章示例通常含有多段被注释的演示代码,请读者查看...
对话框高级应用 7.2.2 示例——实现无模式对话框 7.4.5 示例——使用模式属性表及向导属性表 7.5.4 示例——鼠标敏感文字 第8章 GDI+图形编程 本章示例通常含有多段被注释的演示代码,请读者查看...
- 熟悉Excel 2010的工作界面,包括菜单栏、功能区、工作簿、工作表标签和单元格。 - 学习输入文本、数字和日期,以及基本的编辑操作,如剪切、复制、粘贴和删除。 2. **格式化单元格** - 设置字体、字号、颜色和...
- **第8章:按钮和复选框**(Buttons and CheckBoxes)——探讨不同类型的交互按钮组件及其使用场景。 - **第9章:列表和组合框**(Lists and ComboBoxes)——讨论列表和下拉列表组件的使用技巧。 - **第10章:...