標籤:android style blog class code java
該程式任務:添加一個顯示文本和一個按鈕
對Activity的初步認識:就像一個視窗,能顯示資訊,又像一個容器,能容納功能空間,如button,在程式角度上看,又像一個 類,可以和其他的類(Activity)發生聯絡。
建立Activity的要點:
- 一個Activity就是一個類,類名隨意起,不過必須繼承Activity這個父類。
- 需要複寫onCreate()方法
- 每一個Activity都應該在AndroidManifest.xml檔案中進行配置
- 為Activity添加必要的控制項
整體檔案代碼預覽:
1 //MyActivity.java 檔案 2 3 package geeker.MyActivity; 4 import android.app.Activity; 5 import android.os.Bundle; 6 import android.widget.Button; 7 import android.widget.TextView; 8 9 public class MyActivity extends Activity {10 //成員變數的聲明11 private TextView myTextView = null;12 private Button myButton = null;13 //重寫OnCreate方法,會自動產生14 public void onCreate(Bundle savedInstanceState) {15 //調用父類方法,該句代碼自動產生16 super.onCreate(savedInstanceState);17 //通過布局檔案的id調用該Activity所使用的布局檔案18 setContentView(R.layout.main);19 //通過findViewById()方法拿到布局檔案中添加的控制項20 //不過在布局檔案中添加控制項的時候必須定義id號,21 //如:android:id="@+id/myTextView"22 myTextView = (TextView)findViewById(R.id.myTextView);23 myButton = (Button)findViewById(R.id.myButton);24 //向控制項上制定顯示文字25 myTextView.setText("This is my first Activity !");26 myButton.setText("MY FIRST BUTTON"); 27 }28 }29 30 //main.xml 檔案31 <?xml version="1.0" encoding="utf-8"?>32 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"33 android:orientation="vertical"34 android:layout_width="fill_parent"35 android:layout_height="fill_parent"36 >37 <TextView 38 android:id="@+id/myTextView"39 android:layout_width="fill_parent" 40 android:layout_height="wrap_content" 41 />42 <Button43 android:id="@+id/myButton"44 android:layout_width="fill_parent"45 android:layout_height="wrap_content"46 /> 47 </LinearLayout>48 49 //R。jar 檔案該檔案自動產生,不要自己改動50 /* AUTO-GENERATED FILE. DO NOT MODIFY.51 *52 * This class was automatically generated by the53 * aapt tool from the resource data it found. It54 * should not be modified by hand.55 */56 57 package geeker.MyActivity;58 59 public final class R {60 public static final class attr {61 }62 public static final class drawable {63 public static final int icon=0x7f020000;64 }65 public static final class id {66 public static final int myButton=0x7f050001;67 public static final int myTextView=0x7f050000;68 }69 public static final class layout {70 public static final int main=0x7f030000;71 }72 public static final class string {73 public static final int app_name=0x7f040001;74 public static final int hello=0x7f040000;75 }76 }
其實走一遍添加Button的流程就明白各個檔案間的聯絡了:
1 先開啟main.xml檔案,加一個button按鈕的布局
1 <Button2 android:id="@+id/myButton"3 android:layout_width="fill_parent"4 android:layout_height="wrap_content"5 />
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檔案中進行配置