網頁

2009年9月10日 星期四

關於程式架構

   1: package HelloWord.com;

3: import android.app.Activity;
4: import android.os.Bundle;

6: public class HelloWord extends Activity {
7: /** Called when the activity is first created. */
8: @Override
9: public void onCreate(Bundle savedInstanceState) {
10: super.onCreate(savedInstanceState);
11: setContentView(R.layout.main);
12: }
13: }

這是Helloword的程式碼? 他到底在說什麼呢,這幾行程式碼其實很簡單看起來很複雜
我註解一下
   1: package HelloWord.com;
3: import android.app.Activity; //宣告
4: import android.os.Bundle; //宣告

6: public class HelloWord extends Activity {//程式活動範圍
7: /** Called when the activity is first created. */
8: @Override
9: public void onCreate(Bundle savedInstanceState) { //當Create時
10: super.onCreate(savedInstanceState);
11: //『Create』事件裡把參數savedInstanceStatePass給父物件作原始的處理
,不過如果這一常程式碼沒有感覺也沒有關係 當作沒看到,但是不可以幹掉......

12:
13: setContentView(R.layout.main);//把Main.xml 顯示出來

15: }
16: }


更簡化如下
   1: /*
2: 宣告
3: 程式活動範圍
4: {
5: 當程式Create時
6: {
7: 把MAIN.xml顯示出來
8: }
9: }
10: */


ㄟ....原來HelloWord 這麼簡單阿,簡單來說這個程式什麼事情都沒作,只寫了一行程式碼
當Create的時候
setContentView(R.layout.main); <--把Main.xml 顯示出來。 看懂這裡的程式,心裡一定有很多疑問
  1. .如果說一個xml代表一個表單,是不是我建立一個表單的xml 那使用setContentView(我的比單) 就可以顯示新的表單呢?
  2. onCreate 叫做『當建立時候』那什麼時候會建立呢,程式啟動的時候嗎?
  3. 這是一個HelloWord我可以透過程式的方法去更改HelloWord的字樣嗎
  4. 除了onCreate 事件之外還有其他什麼事件?他們該怎麼打阿, 一個onCreate裡面我怎麼知道要打上super.onCreate(savedInstanceState); 這些該不會要我背起來吧....還是每次都要打一堆這些指令呢?
第一個問題是肯定的,我們做了以下的實驗,我們首先在 res\layout增加一個Android XML
卻出現了一個錯誤,心裡忽然冒出一陣&︿*(%︿&
後來試了一下使用畫面上這個按鈕,就可以避開這個錯誤,增加Android xml 請使用這個按鈕

輸入檔案名稱,注意名稱必須 有.xml
又出現錯誤了
[2009-09-13 12:59:08 - HelloWord] res\layout\NewXml.xml: Invalid file name: must contain only [a-z0-9_.]
[2009-09-13 12:59:08 - HelloWord] Unknown error:
原來名稱只能有小寫和數字,改一下名稱,並且在新的表單中加入一些物件
我加入了兩個可愛的小時鐘
然後程式碼加入
setContentView(R.layout.newxml);
在main的下方,這樣代表先顯示main然後再顯示我們的表單
不過執行起來沒機會看到main就被我們的覆蓋了,下一章我們再來寫一個
按了按鈕就切換表單。
那問題 234呢....黑.....

沒有留言: