`
wc0903
  • 浏览: 81924 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

第八章 列表、菜单以及其它视图——上

阅读更多

关键技能和概念

l        构建Activity

l        使用Android菜单

l        使用AutoCompleteTextView

本章对ViewsIntents做了深入的研究,这些对于Android的新手来说是需要掌握的最重要的特性。这两个实体组成了你的前期应用的主体。你创建的每一个Activity几乎都会有多个视图,并且大部分需要条用一两个Intent

深入学习这些主题的最佳方式是采用一种非常容易上手的方法。阅读这些主题并回顾属性列表是一种,但是独立进行代码实现是完全不同的。也就是说,就像前几章中你已经做的,你将非常频繁地利用ViewsIntents构建Activity。通过构建这个应用,你会得到ViewsIntents的最佳实践。

前两章通过创建简单的Activity,使用大量关于ViewsIntents的基础功能,简单地介绍了ViewsIntents。本章中,你会构建稍微复杂一点的Activity,即使用新Intents调用我们创建的新Activity。这些新的Activity会展示当前Android SDK版本可用的大部分视图。本章解释这些视图的基本功能,例如AutoComplete 列表和Gallery,并介绍了每个Activity对应的每个视图属性的变量。

首先,创建一个新的名为AndroidViewsEclipse项目。用如下所示的参数创建项目:一个包名android_programmers_guide. AndroidViews,一个ActivityAndroidViews,和一个应用名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.xmlAndroidManifest.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 ActivityIntent Filter,主Activity在项目中创建。这个文件中,你可以添加其他任何你想让项目处理的Intent Filters。本例中,你要添加一个处理新建的Test ActivityIntent 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添加这段代码可以使AndroidTest ActivityIntents传递到正确的位置。完整的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 ActivityIntent呼叫了。要创建Test Activity Intent call,你会使用一种类似于的在第七章中你调用手机拨号器的那种框架。下面一行代码会建立Intent

Intent testActivity = new Intent(this, test.class);

这一行创建了一个名为testActivityIntent。参数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,你需要覆盖ActivityonCreateOptionsMenu()方法。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){

}

  • 大小: 28.7 KB
  • 大小: 10.6 KB
  • 大小: 21.8 KB
  • 大小: 10 KB
  • 大小: 25.5 KB
  • 大小: 21.5 KB
1
0
分享到:
评论
4 楼 GodSpeedo 2011-02-01  
2.2SDK版本原因,完整的AndroidViews.java文件中缺少包:
import android.view.MenuItem;
否则public boolean onOptionsItemSelected(MenuItem item){中的
MenuItem 会报错。
3 楼 GodSpeedo 2011-02-01  
2.2sdk
2 楼 GodSpeedo 2011-01-28  
实验过程中还出过这样一个错误:
  最后程序报错:
  Error generating final archive: java.io.FileNotFoundException: C:\xxx\bin\resources.ap_ does not exist

  解决方法:“Project”-“Clean”,不ok的话重启eclipse
1 楼 GodSpeedo 2011-01-28  
或许因为SDK的升级,此程序中缺少一个包:
import android.view.MenuItem;

相关推荐

    Windows编程新手乐园 CHM

    第八章 本篇复习——控制台应用程序和长文件名 第二篇:字体和窗口控制 第九章 第八天课程——Windows 动画:Snake 游戏 第十章 第九天课程——字体基础知识 第十一章 第十天课程——窗口控制 第十二章 第十...

    Word 2010办公应用案例视频教程下载第8章 视图和窗口操作——对比查看员工规章制度文档.zip

    总的来说,本视频教程的第8章详细介绍了Word 2010中的视图和窗口操作,旨在提升用户在处理复杂文档,尤其是对比员工规章制度文档时的工作效率。通过学习和实践,用户不仅可以熟练掌握各种视图的切换与应用,还能精通...

    《Visual C++实用教程》ppt课件(刘惊雷)

    第8章:利用CDC实现绘图程序.ppt 第9章:Windows应用程序引擎——消息映射.ppt 第10章:用户交互对象——菜单、工具栏和状态栏.ppt 第11章:对话框及常用控件.ppt 第12章:基于文档/视图结构的程序.ppt 第13章:...

    Android编程入门很简单.(清华出版.王勇).part2

    第8章Android应用程序组成 8.1深入理解Activity 8.1.1使用Intent连接Activity 8.1.2 Activity的生命周期 …… 第9章Android中的数据存储 第10章绚丽的多媒体技术 第11章Android网上冲浪 第12章Android地图服务 第4篇...

    Android编程入门很简单.(清华出版.王勇).part1

    第8章Android应用程序组成 8.1深入理解Activity 8.1.1使用Intent连接Activity 8.1.2 Activity的生命周期 …… 第9章Android中的数据存储 第10章绚丽的多媒体技术 第11章Android网上冲浪 第12章Android地图服务 第4篇...

    GBaseDataStudio管理工具手册

    - **第八章:FAQ** —— 提供了常见问题解答,帮助解决用户在使用过程中遇到的技术难题。 #### 三、版权与免责声明 文档开头部分详细阐述了GBaseDataStudio管理工具手册的版权信息和法律声明。这些声明强调了文档...

    Visual foxpro 课件--史济民

    8. **第八章:菜单和工具栏** —— 教授如何构建自定义菜单和工具栏,提升应用程序的用户体验。 9. **第九章:类和对象** —— 探索面向对象编程,理解类和对象的概念,以及如何在VFP中实现封装、继承和多态。 10....

    Photoshop CS4中文版完全自学视频教程下载第17章 PhotoshopCS4新增功能——3D图像处理.zip

    6. **3D渲染和导出**:完成3D设计后,用户可以直接在软件内进行高质量渲染,并导出为JPG、PNG或其他格式,方便用于印刷或网络展示。 7. **3D整合**:与2D图像的无缝结合是Photoshop CS4的一大亮点,用户可以将3D...

    AndroidStudio————实战演练——仿美团外卖菜单

    在本项目中,"AndroidStudio————实战演练——仿美团外卖菜单"是一个专注于使用Android Studio开发的应用程序实战案例,目标是创建一个类似于美团外卖的菜单功能。这个项目涵盖了多个Android开发的关键知识点,...

    UG NX 7.0中文版完全自学视频教程下载第1章 感受UGNX7精彩世界——UGNX7入门.zip

    本教程的第一章“感受UGNX7精彩世界——UGNX7入门”是整个学习旅程的起点,主要涵盖了以下几个关键知识点: 1. **UG NX 7.0简介**:介绍UG NX 7.0的基本功能和在工业设计中的重要性。这一版本引入了许多新特性,如...

    visual c++6.0技术内幕 带有NLC的文件查看器

     第8章 使用ActiveX控件  第9章 Internet Explorer 4通用控件  第10章 win32内存管理  第11章 位图  第12章 windows消息处理和多线程编程 第三部分 文档视图结构  第13章 菜单、键盘、加速键、多信息  第14章...

    UG NX 7.0中文版完全自学视频教程下载第3章 绘图前的设置——UG NX 7功能应用.zip

    7. **视图管理**:在UG NX 7.0中,理解和掌握视图的创建、移动、旋转以及关联方式,有助于清晰地展示设计意图,便于沟通和审查。 8. **层管理**:通过层管理,可以组织模型的不同部分,使其在设计和显示时更加有序...

    滑动菜单 上下左右

    本项目名为"Sliding Drawer Master",意在实现一个全方位——上下左右都能滑动的菜单效果,同时强调代码的简洁性。 在Android开发中,滑动菜单通常通过以下几种方式实现: 1. **SlidingPaneLayout**: Android SDK ...

    微信小程序点餐系统微信小程序开发实战

    8. 后台管理:商家管理菜单、订单、用户信息等。 三、开发流程 1. 设计原型:使用工具如Sketch、Adobe XD等设计系统界面,明确交互逻辑。 2. 数据库设计:根据需求定义数据表结构,如菜品表、订单表、用户表等。 3....

    Google Android开发入门与实战的代码

    第8章 移动信息仓库——Android的数据存储操作 136 8.1 Android数据存储概述 136 8.2 轻轻地我保护——SharedPreferences存储 136 8.3 谁的文件,谁主宰——文件存储 140 8.4 打造自己的数据库存储——...

    Visual C++.NET编程技术体验

    对话框高级应用 7.2.2 示例——实现无模式对话框 7.4.5 示例——使用模式属性表及向导属性表 7.5.4 示例——鼠标敏感文字 第8章 GDI+图形编程 本章示例通常含有多段被注释的演示代码,请读者查看...

    Visual C++.NET编程技术体验__实例源码

    对话框高级应用 7.2.2 示例——实现无模式对话框 7.4.5 示例——使用模式属性表及向导属性表 7.5.4 示例——鼠标敏感文字 第8章 GDI+图形编程 本章示例通常含有多段被注释的演示代码,请读者查看...

    E.xcel_2010中文版办公应用案例教程第3章 工作表的修饰——制作公司值班表.zip

    - 熟悉Excel 2010的工作界面,包括菜单栏、功能区、工作簿、工作表标签和单元格。 - 学习输入文本、数字和日期,以及基本的编辑操作,如剪切、复制、粘贴和删除。 2. **格式化单元格** - 设置字体、字号、颜色和...

    (Sams) Pure JFC swing

    - **第8章:按钮和复选框**(Buttons and CheckBoxes)——探讨不同类型的交互按钮组件及其使用场景。 - **第9章:列表和组合框**(Lists and ComboBoxes)——讨论列表和下拉列表组件的使用技巧。 - **第10章:...

Global site tag (gtag.js) - Google Analytics