最近考试什么的都已经结束了,闲在家也没什么事做,就想着学点什么,于是便选择了学一下Android开发。一直在使用Android手机,要是自己能为自己的手机开发一个APP就好了。

好了,也不扯些废话了,开始Android之旅吧!不过出师必须要有名,由于是探索未知世界,我便取名叫“My Magic Android Tour”好了。

由于之前做课程设计(完全是打酱油的)已经配置过环境之类的,这也是上次的唯一收获,其实也不太好,剥夺了我学习配置环境的机会,。哎,所以说“祸兮福所倚,福兮祸所伏”。额……,又扯远了。

第一步:

打开Eclipse,新建一个Android工程,此时需要填写工程相关信息,如下图。

那么,这里的每一项是什么意思呢?将焦点分别移至每一项上面,可以总结出如下表格。 按照上述表格,我填写各项信息如下。 这里的Theme项只能选择None,如果选择其他主题,都会报错,原因是当前最低版本的SDK不支持这些主题。 傻瓜式操作——Next, 在这里就使用默认。Next, 在这里是设置应用程序图标的,任然使用默认。Next, 这里的Create Activity原来是选中的,但是报了错,依旧是SDK版本不支持。于是只好去掉,可是去掉之后,就不会在创建应用程序的时候自动生成一个Activity。当然,这并不是什么大问题,因为我可以手动去创建,还能学到不少呢!再一次验证了“祸兮福所倚,福兮祸所伏”这句话。 在这里设置完成后,就可以点击Finish来完成应用程序的创建了。至此,我也完成了第一步。

第二步:

在某一本书上说:Android程序用XML文件来布局UI,用Java类来处理逻辑。

于是,我们便创建一个XML文件,而且该XML文件必须要放在layout文件夹中。

创建成功后,打开该XML文件,可以看到如下代码。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    </LinearLayout>

第一个程序只为熟悉流程,不实现任何功能,所以,不修改XML文件任何地方。

XML创建好后,需要创建一个Java类来加载该XML文件上的内容,但是此处的Java类是一个特殊的类,它必须继承自android.app.Activity类。

创建好后,为了加载该XML文件,必须要重写onCreate方法,可以把它看做是普通Java程序中的main方法。

public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// Other Code……}}

至此,便完成了整个程序的编写,看来还是挺简单的嘛!

接下来的工作就是要将程序跑起来。

第三步:

为了将程序跑起来,我们必须要启动模拟器。由于第一次编写Android应用,所以必须先新建一个模拟器。在Eclipse的工具条上单击按钮,此时可以看到一个模拟器都不存在。所以要New一个。

按要求填写各项信息,然后确定。

OK,接下来,启动刚才创建好的模拟器就行了。

还挺像一部手机的嘛,难怪叫模拟器呢!好了,不说废话了,运行程序吧。

点击之后,等了好大一会,可是一点反应都没有,于是,翻书、百度。哦,原来是没有注册刚才写的Activity类。

打开清单文件AndroidManifest.xml,注册MainActivity类。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="tour.magic.helloandroid"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="10"        android:targetSdkVersion="19" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <!-- 在此处注册Activity类 -->        <activity android:name="MainActivity" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
再次运行,会发现应用程序还没跑起来就挂掉了。

到底是什么原因呢,于是带着这个问题去百度,有人说打开Logcat查看具体原因,我变照着做了,看到如下原因。

从上诉原因中看到java.lang.ClassNotFoundException这个异常,为什么找不到类文件呢?它明明就在那里啊,带着这个问题继续百度。看到有人说要在配置文件中的语句<activity android:name="MainActivity" >中的MainActivity前面加一个'.'表示当前目录,我便加上去了。<activity android:name=".MainActivity" >,再次运行。会发现根本没什么用,依旧还是那个异常。

这到底是哪里出问题了呢,此刻的我非常的焦急了,但是还是像个武林高手一样气沉丹田,慢慢地,冷静下来了,于是开始静静思考原因。首先,既然'.'表示当前目录,那么当前目录到底是什么呢?此时抬头看到45°角处写着package="tour.magic.helloandroid"。目录找着了,在就看该目录下到底有没有类文件。切换到src下,惊人地发现

哦,原来我的MainActivity类在默认包中,难怪呢,大哥,您干嘛要躲在这儿呢?害得我真惨啊!

好了,问题总算是找着了,接下来就是要解决它。粗略一想,有3种方案。

第一种:在src下新建一个tour.magic.helloandroid包,然后将MainActivity类移到这个包下;

第二种:在注册MainActivity是带上其所在包名;

第三种:将清单文件中package="tour.magic.helloandroid"后面的值改为MainActivity所在包名。

仔细考虑了一下,后面两种不可取。原因如下:

对于第二种,带上包名,可是我的类在默认包中啊,Java从1.4版本开始就不支持导入默认包中的类了[见附录1]。当然也可以新建一个不同于第一种解决方案中包,将类移进去,这样在那些需要很多包的程序中是挺好的,但是在本程序中,完全没有必要这么麻烦,安装第一种解决方案中就可以了。

对于第三种,修改清单文件这里的包名,由于整个应用程序只有这一个清单文件,那么就有可能因为修改了此处的包名而影响其他地方,不值得冒这个险。

于是,便采用方案一来解决。

再次运行程序,看到程序总算可以跑起来了,真是有些小小的激动。

OK,下面来总结一下整个流程。

写到此处,My Magic Android Tour处女作也快接近尾声了,第一次怎么大篇幅地写一篇文章。不过既然已经开了头,那么就继续坚持下去,每天将所学记录成文。在记录中成长,在分享中进步!


附录1:

Java从JDK1.4就不在支持从默认包中导入类,这样做的目的我想应该是帮助开发者养成使用包名的好习惯。


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)Developers:向其它应用发送用户
  6. Android(安卓)上,用普通的 am-linux-gcc 编译 C 程序。
  7. Android实现应用程序卸载自己
  8. Android设备的内置存储和外置存储到底是怎么回事,深入理解
  9. u3d与android通信1

随机推荐

  1. Android(安卓)|整理遇到的那些形形色色的
  2. Android中实用小知识
  3. android屏幕分辨率 的获取
  4. Android 9.0 修改默认壁纸(主壁纸和wapppa
  5. Android TextView 单行文本的坑
  6. android的BuildConfig学习
  7. Android Contacts(二)—— SMS 短信 与 Con
  8. android 夜间模式
  9. Android and Linux suspend and resume d
  10. Android开发之TextView高级应用