My Magic Android Tour —— 处女作
近期考试什么的都已经结束了,闲在家也没什么事做,就想着学点什么,于是便选择了学一下Android开发。一直在使用Android手机。要是自己能为自己的手机开发一个APP就好了。
好了,也不扯些废话了,開始Android之旅吧。只是出师必需要有名,因为是探索未知世界,我便取名叫“My Magic Android Tour”好了。
因为之前做课程设计(全然是打酱油的)已经配置过环境之类的,这也是上次的唯一收获,事实上也不太好,剥夺了我学习配置环境的机会,。哎,所以说“祸兮福所倚,福兮祸所伏”。额……,又扯远了。
第一步:
打开Eclipse,新建一个Androidproject,此时须要填写project相关信息。例如以下图。
于是仅仅好去掉,但是去掉之后,就不会在创建应用程序的时候自己主动生成一个Activity。
当然,这并非什么大问题,由于我能够手动去创建,还能学到不少呢。再一次验证了“祸兮福所倚,福兮祸所伏”这句话。
第二步:
在某一本书上说: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的工具条上单击button,此时能够看到一个模拟器都不存在。
所以要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-sdkandroid:minSdkVersion="10"android:targetSdkVersion="19" /><applicationandroid: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就不在支持从默认包中导入类,这样做的目的我想应该是帮助开发人员养成使用包名的好习惯。
转载于:https://www.cnblogs.com/yxysuanfa/p/6722958.html
My Magic Android Tour —— 处女作相关推荐
- Android OrangePi 4G IOT(二) - MTK更换调试串口
一.Debug LOG串口更改 orangepi 4G iot的默认的log调试串口是在板子后面的,使用起来不方便,之前UART0焊接不好导致焊盘弄坏了,没办法,准备修改成插针的40pin引脚的的UA ...
- 华为荣耀android是什么系统,华为荣耀Magic自主系统梦碎 还是Android操作系统
华为荣耀Magic自主系统梦碎 还是Android操作系统 来源:www.18183.com作者:似水流年时间:2016-12-07 华为荣耀Magic这么魔幻的名字会不会有自己的操作系统呢?本文小编 ...
- android 不卡 华为,荣耀Magic是什么系统 华为荣耀Magic手机是不是也不卡?
此前传闻荣耀Magic将不再使用安卓系统,而采用自主操作系统,令不少花粉兴奋,不过随着荣耀Magic正式发布,该机搭载的操作系统也正式得到了确认,那么,荣耀Magic是什么系统?是否是和华为Mate9 ...
- 关掉magiskhide_Magisk v20.4 – The Magic Mask for Android 安裝流程
Magisk 是topjohnwu 在XDA 所释出的MOD,主要是提供一个通用介面??来让开发者能够较为轻松的开发以及维护Systemless 架构的功能模组,其中在处理Android Pay 使用 ...
- magic和android的区别,荣耀Magic缺点是什么?荣耀Magic优缺点一览
荣耀Magic作为一款概念手机,发布之初就受到所有媒体的关注.而根据官方的发布会介绍,荣耀Magci的研发周期超过了4年,耗费了无数工程师们的心血.当然,任何事物都不是完美的,更何况电子产品.荣耀Ma ...
- magic版本和android版本,华为荣耀Magic进化版和稳定版区别是什么?
首先要告诉大家的是,目前荣耀Magic国行发布都是标准版.而网上或者网友提到的荣耀Magic进化版,其实是对荣耀Magic系统的版本的一种区分.根据荣耀官方给出的数据,荣耀Magic在硬件配置上,不存 ...
- magic版本和android版本,荣耀Magic2的6G版和8G版差什么? 荣耀Magic2版本对比
荣耀Magic2是最近非常火的一款滑盖全面屏手机,配备屏幕指纹.40W超级快充等,售价3799元起,在国产高端旗舰机中性价比也很不错.而最近有网友问到小编这样一个问题:荣耀Magic2的6G版和8G版 ...
- ubuntu+for+android华为荣耀,华为荣耀magic book(锐龙版)安装ubuntu系统
荣耀magic book锐龙版性价比很高,前段时间在朋友推荐下我自己也入手了一台.机器整体感觉不错,续航时间长(办公.无线上网5-6小时吧),速度快,买的时候4300,现在已经降到4000以下了,也算 ...
- magic版本和android版本,荣耀Magic有几个版本?荣耀Magic各版本区别对比评测
今天下午,华为在上深圳召开发布会,正式发布了荣耀Magic未来手机,大家期待的荣耀Magic手机已经正式亮相.那么荣耀Magic有几个版本?荣耀Magic各版本有什么区别?针对不少网友比较关心的问题, ...
最新文章
- Linux串口读取与解析
- logo qt添加_linux下如何给qt程序添加图标?
- oracle 输出重复记录,ORACLE 去除重复记录
- mysql 网络io_MySQL的各种网络IO超时的用法和实现
- BRCM5.02编译八: ERROR: you are missing a basic functioning perl installation
- selenium V1.0和V2.0差别对比
- Android9获取权限闪退,Android 9.0 关于ACTION_CALL无权限导致闪退的问题
- 连续子数组的最大和python_连续子数组的最大和
- Decorator(装饰)--对象结构型模式
- c#连mysql的latin1编码乱码问题
- 经典线程同步 互斥量Mutex的使用分析
- java 单例加锁方法的讨论
- [SQL实战]之查找当前薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
- 测试团队月报怎么写?
- 现代通信技术之SDH技术
- 系统仿真实践中的精益思维(随感)
- 电脑如何录制游戏视频
- 【项目经验】产研流程(超级详细的步骤)
- html中引用名言标签,CSS3 培根名人名言引用全屏居中样式设计
- 【unity3D】单点和多点触控