在《Android 应用开发解密》这本书里面,没有交代创建一个项目所需要的全部步骤。如果只是从书的源码中看代码,那么始终无法自己创建一个完整的项目。自己摸索了一下,把结果整理出来。
我需要的双界面程序要包含一个输入用户名、密码的登录界面,以及一个显示结果的界面。至于中间的数据传递和数据校验等等以后再说。先把创建基本元素的事情搞定。下面是步骤。
第一步是创建一个 Android 项目,这个简单。
第二步,创建界面布局文件。项目创建好以后,会自动创建一个 Activity 和其布局文件 res/layout/main.xml。由于还需要一个界面,剩下的要自己加。先加布局文件,方法是在项目的包资源浏览器里面右键选择 New->Android XML File,剩下的看着办,没难度。
在布局文件里面给各个界面元素命名用的是 Edit ID,修改显示的文字用 Edit Text 。不过 Edit Text 和用VE不一样,不能直接输入,而是必须使用字符串资源。在那个弹出的对话框里面点击左下角的“New String...”就可以创建新的字符串资源了。显示已创建的字符串资源就那么个小框框,将来界面做复杂了可怎么选个资源啊?
第三步,创建 Activity 类。用创建普通 Java 类的方法就行了,创建的时候把父类指定为 Activity 。不过这样创建好的类是完全空白的,要自己把布局加进去。从先前创建项目的时候自动生成的 Activity 类里面复制代码就可以了。我在两个界面里面各加了一个 Button,点击Button就在2个界面之间切换,其中登录界面的代码是这样的:
Button button = (Button) findViewById(R.id.loginButton);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
/* 新建一个Intent对象 */
Intent intent = new Intent();
/* 指定intent要启动的类 */
intent.setClass(HelloAndroid.this, LoginResult.class);
/* 启动一个新的Activity */
startActivity(intent);
/* 关闭当前的Activity */
HelloAndroid.this.finish();
}
});
第四步,注册 Activity 类。据说如果不在项目的 XXXManifest.xml 文件中注册, Activity 类就不能使用。这是谁从Struts那学来的坏毛病啊?还是Ruby省事。
目前碰到的问题:
1、在新建字符串资源的时候,那个弹出框的默认输入焦点不在最上面输入字符串文本的地方,却是在输入字符串资源键值的地方,设计失误吗?
2、既然所有的 Activity 类都必须注册才能用,那么为什么不像创建界面的时候自动修改 R.java 一样,自动在 Activity 类创建的时候往XXXManifest.xml 文件里面添加 Activity 类呢?
3、修改 XXXManifest.xml 文件来添加 Activity 的时候,那部分界面在我22英寸屏幕下都藏在下面,要拖出滚动条才能看到。这么重要个界面,不能单独分出一个标签页来吗?
4、在两个 Activity 之间怎样传递数据,是那个 Intent 吗?但是从名字来看不像啊。难道是 Content Provider ?太复杂了点吧。总不能用全局变量这么老土的方法来搞吧。
5、在重构的时候修改了界面组件的ID,R.java 文件里面的ID改掉了,可是我们自己的 Java 文件里面没有跟着修改,是Bug?