第一個Android程序——認識文件結構 – Android移動開發技術文章_手機開發 Android移動開發教學課程

對Activity的初步認識:就像一個窗口,能顯示信息,又像一個容器,能容納功能空間,如button,在程序角度上看,又像一個 類,可以和其他的類(Activity)發生聯系。


創建Activity的要點:


一個Activity就是一個類,類名隨意起,不過必須繼承Activity這個父類。
需要復寫onCreate()方法
每一個Activity都應該在AndroidManifest.xml文件中進行配置
為Activity添加必要的控件
整體文件代碼預覽:


View Code
//MyActivity.java 文件package geeker.MyActivity;import android.app.Activity;import android.os.Bundle;import android.widget.Button;import android.widget.TextView;public class MyActivity extends Activity {    //成員變量的聲明    private TextView myTextView = null;    private Button myButton = null;    //重寫OnCreate方法,會自動生成    public void onCreate(Bundle savedInstanceState) {        //調用父類方法,該句代碼自動生成        super.onCreate(savedInstanceState);        //通過佈局文件的id調用該Activity所使用的佈局文件        setContentView(R.layout.main);        //通過findViewById()方法拿到佈局文件中添加的控件        //不過在佈局文件中添加控件的時候必須定義id號,        //如:android:id=”@+id/myTextView”        myTextView = (TextView)findViewById(R.id.myTextView);        myButton = (Button)findViewById(R.id.myButton);        //向控件上制定顯示文字        myTextView.setText(“This is my first Activity !”);        myButton.setText(“MY FIRST BUTTON”);      }}//main.xml 文件<?xml version=”1.0″ encoding=”utf-8″?><LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”    android:orientation=”vertical”    android:layout_width=”fill_parent”    android:layout_height=”fill_parent”    ><TextView      android:id=”@+id/myTextView”    android:layout_width=”fill_parent”     android:layout_height=”wrap_content”     /><Button    android:id=”@+id/myButton”    android:layout_width=”fill_parent”    android:layout_height=”wrap_content”    />    </LinearLayout>//R。jar 文件該文件自動生成,不要自己改動/* AUTO-GENERATED FILE.  DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found.  It * should not be modified by hand. */package geeker.MyActivity;public final class R {    public static final class attr {    }    public static final class drawable {        public static final int icon=0x7f020000;    }    public static final class id {        public static final int myButton=0x7f050001;        public static final int myTextView=0x7f050000;    }    public static final class layout {        public static final int main=0x7f030000;    }    public static final class string {        public static final int app_name=0x7f040001;        public static final int hello=0x7f040000;    }}
其實走一遍添加Button的流程就明白各個文件間的聯系瞭:


1 先打開main.xml文件,加一個button按鈕的佈局


<Button    android:id=”@+id/myButton”    android:layout_width=”fill_parent”    android:layout_height=”wrap_content”    />   
2 其實上一步完成後,編譯運行已經能看到一個Button按鈕瞭,但是我想在按鈕上添加文字以說明該按鈕的作用,在java中的程序為 :


Button bt = new Button();bt.setText(“MY FIRST BUTTON”);
那麼在Android程序中如何在.java源文件中拿到剛才在main.xml中添加的控件呢?


基於這個目的,在main.xml文件中加瞭此句:android:id=”@+id/myButton”,這一句使得R.java文件中多瞭一個叫id的類,該控件的id號就在這個類中出現瞭,這樣做為瞭方便.java文件中的調用。


實際上如果不加上一句,該控件是不會在R.java文件中產生id號碼的,因為隻有在res目錄中添加文件才會自動在R.java中產生id號,而添加一個控件隻是在一個資源文件中做修改而已,所以不會自動產生id號。


我們可以看一下R.java文件中自動產生的ID代碼:


 public static final class id {        public static final int myButton=0x7f050001;        public static final int myTextView=0x7f050000;    }
然後在.java文件中就可通過getViewById()方法拿到控件瞭


拿到控件之後就可以像java程序中一樣進行相關操作瞭,代碼如:


private Button myButton = null;myButton = (Button)findViewById(R.id.myButton);myButton.setText(“MY FIRST BUTTON”); 
實際上這個流程隻體現瞭xml文件和R.java文件之間的聯系(通過該句:android:id=”@+id/myButton),以及.java與R.java之間的聯系(通過該句:findViewById(R.id.myTextView) )


補充一下其他文件關系的代碼體現:


MyActivity.java文件與Main.xml文件的聯系時通過MyActivity.java文件中的setContentView(R.layout.main);體現的,因為一個Activity文件要對應一個佈局文件


MyActivity.java文件與AndroidManifest.xml文件之間的聯系時通過AndroidManifest.xml文件中的


<activity android:name=”.MyActivity”                  android:label=”@string/app_name”>            <intent-filter>                <action android:name=”android.intent.action.MAIN” />                <category android:name=”android.intent.category.LAUNCHER” />            </intent-filter>        </activity>
來體現的,這也說明瞭Activity創建的關鍵點之一:
每一個Activity都應該在AndroidManifest.xml文件中進行配置

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *