My Magic Android Tour —— 处女作

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

好了,也不扯些废话了,開始Android之旅吧。只是出师必需要有名,因为是探索未知世界,我便取名叫“My Magic Android Tour”好了。

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

第一步:

打开Eclipse,新建一个Androidproject,此时须要填写project相关信息。例如以下图。

My Magic Android Tour —— 处女作

    那么。这里的每一项是什么意思呢?将焦点分别移至每一项上面,能够总结出例如以下表格。
My Magic Android Tour —— 处女作
       依照上述表格。我填写各项信息例如以下。
My Magic Android Tour —— 处女作
       这里的Theme项仅仅能选择None,假设选择其它主题,都会报错,原因是当前最低版本号的SDK不支持这些主题。
    傻瓜式操作——Next,
My Magic Android Tour —— 处女作
    在这里就使用默认。Next,
My Magic Android Tour —— 处女作
    在这里是设置应用程序图标的,任然使用默认。Next,
My Magic Android Tour —— 处女作
    这里的Create Activity原来是选中的,但是报了错,依然是SDK版本号不支持。

于是仅仅好去掉,但是去掉之后,就不会在创建应用程序的时候自己主动生成一个Activity。

当然,这并非什么大问题,由于我能够手动去创建,还能学到不少呢。再一次验证了“祸兮福所倚,福兮祸所伏”这句话。

    在这里设置完毕后。就能够点击Finish来完毕应用程序的创建了。至此,我也完毕了第一步。

第二步:

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

于是。我们便创建一个XML文件,并且该XML文件必需要放在layout目录中。

My Magic Android Tour —— 处女作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhbjYxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

创建成功后。打开该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类。

My Magic Android Tour —— 处女作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhbjYxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

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

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

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

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


第三步:

为了将程序跑起来,我们必需要启动模拟器。因为第一次编写Android应用,所以必须先新建一个模拟器。在Eclipse的工具条上单击buttonMy Magic Android Tour —— 处女作,此时能够看到一个模拟器都不存在。

所以要New一个。

My Magic Android Tour —— 处女作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhbjYxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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

My Magic Android Tour —— 处女作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhbjYxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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

My Magic Android Tour —— 处女作

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

My Magic Android Tour —— 处女作

点击之后,等了好大一会,但是一点反应都没有。于是,翻书、百度。哦,原来是没有注冊刚才写的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>

再次执行,会发现应用程序还没跑起来就挂掉了。

My Magic Android Tour —— 处女作

究竟是什么原因呢。于是带着这个问题去百度,有人说打开Logcat查看详细原因,我变照着做了,看到例如以下原因。

My Magic Android Tour —— 处女作

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

这究竟是哪里出问题了呢,此刻的我很的焦急了。可是还是像个武林高手一样气沉丹田,慢慢地,冷静下来了,于是開始静静思考原因。首先。既然'.'表示当前文件夹,那么当前文件夹究竟是什么呢?此时抬头看到45°角处写着package="tour.magic.helloandroid"。

文件夹找着了,在就看该文件夹下究竟有没有类文件。

切换到src下,惊人地发现

My Magic Android Tour —— 处女作

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

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

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

另外一种:在注冊MainActivity是带上其所在包名;

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

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

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

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

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

My Magic Android Tour —— 处女作

再次执行程序,看到程序总算能够跑起来了,真是有些小小的激动。My Magic Android Tour —— 处女作My Magic Android Tour —— 处女作My Magic Android Tour —— 处女作

My Magic Android Tour —— 处女作

OK。以下来总结一下整个流程。

My Magic Android Tour —— 处女作

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhbjYxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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

在记录中成长,在分享中进步!

附录1:

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

My Magic Android Tour —— 处女作



上一篇:Python 第五阶段 学习记录之--- Web框架


下一篇:Linux 内核的文件 Cache 管理机制介绍-ibm