My Magic Android Tour —— 處女作

來源:互聯網
上載者:User

標籤:android   app開發   資訊清單檔   程式異常終止   建立android工程   

    最近考試什麼的都已經結束了,閑在家也沒什麼事做,就想著學點什麼,於是便選擇了學一下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就不在支援從預設包中匯入類,這樣做的目的我想應該是協助開發人員養成使用包名的好習慣。




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

My Magic Android Tour —— 處女作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.