1.最简单的HelloWorld
安装了SDK后,直接生成一个Android Project,一句代码不用写,就能跑出一个最简单的HelloWorld例程。
我们看一下它的代码:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->publicvoidonCreate(Bundleicicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
}
看上去实在很简单,只有两句话而已。关键在这个R.layout.main上,凭直觉,这应该是定义的资源。的确,在R.java中只是定义了一个 static int 而已,真正的资源描述在res/layout/main.xml文件里(注意:这里的R.java不要手工编辑,每次build project时它都会根据res下的资源描述被自动修改)。
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextViewid="@+id/txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="HelloWorld"
/>
</LinearLayout>
这个文件很好读,一个<LinearLayout>描述了这是一个线性排列的布局,android:orientation=vertical表示所有组件将纵向排布。而经典的Hello World是用一个TextView来展示的。
由此,我们知道,Android的程序从一个Activity派生出来,并且从它的onCreate开始启动;Android里要显示的组件用XML文件描述而不用在代码中硬编码(这是一个好的习惯,我们应该从一开始就坚持下去);
2.让Button来说Hello World
上面的例子是ADT自动生成的代码,似乎与我们一点关系也没有。那我们来改一下代码,因为在windows平台上的Helloworld经常是由一个按钮触发的,所以,我们想第二个Helloworld应该是这样的:加一个按钮和文本输入框,单击按钮后在原来的TextView后面加上输入框中输入的文字。
第一步是,增加一个Button和一个EditText,与TextView一样,它们也在main.xml里描述一下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><EditTextid="@+id/edt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>
<Buttonid="@+id/go"
android:layout_width="wrap_content"android:layout_height="wrap_content"
android:text="@string/go">
<requestFocus/>
</Button>
这里有两个地方要注意:id=@+id/go,这表示需要一个唯一的UID来作为Button的ID,它的引用名是go。还有一个是android: text=@string/go表示这个按钮的文本不是直接写有main.xml里了,而是来源于另一个资源描述文件strings.xml里,本例中的 strings.xml如下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="app_name">helloTwo</string>
<stringname="tit_dialog">提示</string>
<stringname="msg_dialog">你好,中国</string>
<stringname="ok_dialog">确定</string>
<stringname="go">浏览</string>
</resources>
然后,在代码里(onCreate函数中)我们加上以下代码(简单起见,用了嵌套类):
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Buttonbtn=(Button)findViewById(R.id.go);
btn.setOnClickListener(newView.OnClickListener()
{
publicvoidonClick(Viewv)
{
EditTextedt=(EditText)helloTwo.this.findViewById(R.id.edt);
TextViewtxt=(TextView)helloTwo.this.findViewById(R.id.txt);
txt.setText(getString(R.string.msg_dialog)+edt.getText());
}
});
为铵钮增加一个onClick事件处理器,在点击事件中,设置txt的文本为R.string.msg_dialgo+edt.getText()。
这里的关键是两个函数的使用: findViewById(R.id.go)可以根据资源的名称加载View类型的资源,同样用函数getString(R.string.msg_dialog)可以加载字符串资源。
编译,run一下看看效果。
3. 再让菜单Say Hello
从API 文档中我们看到Activity中有两个函数:onCreateOptionsMenu和onOptionsItemSelected,显示,这个 OptionsMenu就是所谓的上下文菜单(在GPhone的模拟器上,有个键专用于弹出这个菜单)。下面我们就为这个HelloWorld例子加上一个菜单,并且让它可以Say hello。
这次,我们不涉及到资源的描述文件了,而是直接使用这两个函数来实现,其实代码也很简单,所以,我们再增加一个退出应用的功能(否则每次都是按取消键退出应用显示太不专业了)。
代码如下:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->publicbooleanonCreateOptionsMenu(Menumenu)
{
super.onCreateOptionsMenu(menu);
menu.add(0,1,"sayhello");
menu.add(0,2,"exit");
returntrue;
}
publicbooleanonOptionsItemSelected(Itemitem)
{
super.onOptionsItemSelected(item);
intid=item.getId();
switch(id){
case1:
AlertDialog.show(this,getString(R.string.app_name),
getString(R.string.msg_dialog),getString(R.string.ok_dialog),true);
break;
case2:
finish();
break;
}
在CreateOptionsMenu时,我们简单地增加两个菜单项,menu.add(组ID,项ID,显示文本),(注意:这里我直接将文字写在代码里,这并不提倡)。然后,在OptionsItemSelected事件中,我们根据选中的菜单项做相应处理,如果选中1,则弹出一个对话框显示资源文件中的“你好,中国”,如果选中2则退出应用。
AlertDialog.show是一个静态方法,类似于我们在WIN平台上经常使用的MessageBox一样,很方便的。
分享到:
相关推荐
下面将详细阐述标题和描述中提到的三种不同的多线程显示"Hello, World!"的方法:临界区法、全局变量法和对象法。 1. **临界区法**: 临界区法是通过控制共享资源的访问来避免线程间的冲突。在多线程环境中,临界区...
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 这两个例子展示了不同编程语言中输出文本到控制台的方法。 标签“hello_world_ world”...
### 深入淺出Hello World —— Hacking HelloWorld (Part I) #### 概述 在《深入淺出Hello World》这一系列文章中,作者Jim Huang(黃敬群/"jserv")通过深入剖析经典的“Hello World”程序,旨在帮助读者理解在...
在`Main`方法中,创建了一个`HelloWorld`类的新实例,并调用了`helloWorld`方法来执行输出操作。 #### 6. From Another Class从另一个类调用 此示例介绍了如何在一个类中定义方法,并在另一个类中调用这些方法。 ...
### JNI入门之HelloWorld(一)详解 #### 一、引言 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI接口提供了若干公共服务,并为Java虚拟机和本机应用程序或...
如何创建QT项目之QTcreator输出HelloWorld,小白保姆级别的教程,还有提供参考链接. HelloWorld程序是一个基于Qt框架的简单示例程序,用于展示如何使用Qt进行图形界面编程。这个程序的主要目的是在窗口中显示一个...
对于初学者来说,理解并创建一个基本的Maven项目,例如“HelloWorld”程序,是入门的绝佳方式。下面我们将详细探讨如何创建并运行这个简单的Maven HelloWorld程序。 首先,我们需要了解Maven的基本结构。每个Maven...
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` Java是一种跨平台的面向对象编程语言,广泛应用于企业级应用、Android应用开发和大数据处理...
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` C++的实现可能如下: ```cpp #include int main() { std::cout << "Hello, World!"; ...
在标签中提到的“first”,“hello_world”,“helloworld”和“world”都与这个经典的编程入门示例有关。它们可能指的是初学者的第一次尝试,或者是对“Hello, World”程序的不同拼写形式。在编程中,"Hello, World...
"Adobe AIR Hello World" 是一个基础教程,旨在引导新手了解如何利用Adobe AIR开发桌面应用。 在Adobe AIR中,"Hello World"程序通常是一个简单的起点,用于展示基本的设置和功能。下面我们将深入探讨这个过程,...
有标准MBean、模型MBean和动态MBean三种类型。 3. **MBean Server**:MBean Server是JMX框架的中心,负责注册MBean、执行MBean的操作以及处理MBean之间的交互。 4. **JMX连接器**:JMX连接器允许远程客户端连接到...
**JSF(JavaServer Faces)入门 HelloWorld 指南** JavaServer Faces (JSF) 是一个用于构建用户界面的 JavaEE 核心技术,它提供了一种声明式的方式来创建 Web 应用程序的用户界面。JSF 提供了一个组件模型,使得...
### C++ 显示 "Hello World!" 程序解析与扩展知识点 #### 一、引言 在编程学习之旅中,“Hello World!”程序通常作为学习任何一种新编程语言的起点。这种程序简单明了,旨在展示如何在目标编程环境中输出最基本的...
"作为起点,展示如何在项目中使用和贡献代码,这对于新手友好,也是开源社区的一种欢迎方式。 7. **源代码结构**:打开压缩包后,我们可能会看到如`README.md`(Markdown格式的说明文件)、`.gitignore`(指定Git...
总结来说,这个压缩包中的"C++ Hello World 程序源码"提供了学习C++语言的良好起点,通过对比不同的实现方式,可以深入理解C++的基础语法和编程技巧。同时,它也是实践编程、熟悉编译与运行流程的绝佳案例。无论是...
### Cocos2d-x初探学习笔记:HelloWorld详解 #### Cocos2d-x简介 Cocos2d-x是一款基于C++的开源游戏开发框架,它最初是从Cocos2d移植而来,支持跨平台的游戏开发,包括iOS、Android、Windows等多平台。Cocos2d-x因...
在这个"springmvc注解版 helloworld"项目中,我们将深入探讨如何使用注解来配置和实现一个简单的Hello World应用。这个项目特别适合初学者入门,因为每个步骤都有详细的注释,确保你能理解每一行代码的作用。 首先...
标题 "自制的dll_helloworld" 暗示了这是一个关于创建和使用Windows平台上简单的动态链接库(DLL)的教程,具体实现为一个“Hello, World!”的示例。DLL是Windows操作系统中的一种共享代码库,它包含可由多个程序...