2010年5月30日 星期日

增加新的Activity

增加新的Activity!

話先說在前頭



Activity可以分為兩種
,獨立的Activity跟相依的Activity


獨立的Activity

獨立的Activity不需要跟其他的Activity相互交換資料,只要單純的用 startActivity 來啟動新的 Activity 就可以了。


相依的Activity

不同的Activity之間有資料的相互交換,又可以分為單向跟雙向兩種,Activity本身的資料會因為其他Activity的改變而改變。

現在我們來新增一個獨立的Activity,要新增獨立的Activity有幾件事情要做:

  1. 建立新的類別。
  2. 在 res/layout 裡面新增對應的xml檔案
  3. 在 Manifest.xml 新增新的 Activity 的描述
  4. 在原來的 Activity 中加入 startActivity 的呼叫


建立新的類別


  1. 在[Package Explorer]裡面點滑鼠右鍵,選[New\Other]
  2. 在[New]的視窗裡面選[Java\Class]
  3. 在[New Java Class]的[Name]裡面填入[Report]。

  4. 然後按下[Browse...],在[Superclass Selection]的[Choose a type:]輸入[activity],然後選擇[Activity - android.app]
  5. 選完之後,就會在[New Java Class\Superclass:]看到裡面填入了[android.app.Activity]了,這時候按下[Finish]就可以了。
  6. 然後我們就可以在[Package Explorer]看到我們新增的[Report.java]了。
  7. 然後將程式改成下面的樣子吧。
    1. package com.demo.android.bmi2;
    2.  
    3. import android.app.Activity;
    4. import android.os.Bundle;
    5.  
    6. public class Report extends Activity {
    7.     @Override
    8.     public void onCreate(Bundle savedInstanceState){
    9.         super.onCreate(savedInstanceState);
    10.         setContentView(R.layout.report);
    11.     }
    12. }
     

新增對應的xml檔案


  1. 先把 [res\layout\main.xml] 複製下來。
  2. 然後貼上
  3. 然後把[Copy of main.xml]改成[report.xml]

  4. 然後用[TextEditor]打開[report.xml]
  5. 然後將[report.xml]改成下面的樣子。
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3.         android:orientation="vertical"
    4.         android:layout_width="fill_parent"
    5.         android:layout_height="fill_parent">
    6.     <TextView android:layout_height="wrap_content"
    7.         android:layout_width="fill_parent"
    8.         android:text="It's report"
    9.         />
    10. </LinearLayout>

修改 Manifest.xml ,新增新的 Activity 的描述

  1. 用 [XML Editor] 打開 AndroidMainfest.xml
  2. 在 manifest\application\activity 點滑鼠右鍵新增一個 Element
  3. 在[New Element]視窗裡面輸入[activity]
  4. 然後在新增的[activity]上面新增[Attribute]
  5. 在[New Attribute]的[Name]裡面輸入[android:name],[Value]裡面輸入[Report]。
  6. 最後就會長的像這個樣子囉!
  7. 其實我們直接用[TextEdit]打開就會看到是下面這個樣子,下次直接手動新增可能會比較快一點。
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3.       package="com.demo.android.bmi2"
    4.       android:versionCode="1"
    5.       android:versionName="1.0">
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
    7.         <activity android:name=".Bmi2"
    8.                   android:label="@string/app_name">
    9.             <intent-filter>
    10.                 <action android:name="android.intent.action.MAIN" />
    11.                 <category android:name="android.intent.category.LAUNCHER" />
    12.             </intent-filter>
    13.         </activity>
    14.         <activity android:name="Report"></activity>
    15.  
    16.     </application>
    17.     <uses-sdk android:minSdkVersion="7" />
    18.  
    19. </manifest>

在原來的 Activity 中加入 startActivity 的呼叫

最後我們在原來計算的地方將程式改成呼叫 Report 這個 Class 就可以了。程式如下所示。

    1.     private OnClickListener calcBMI = new OnClickListener() 
    2.     {
    3.         public void onClick(View v)
    4.         {
    5.           //Switch to report page
    6.           Intent intent = new Intent();
    7.           intent.setClass(Bmi2.this, Report.class);
    8.           startActivity(intent);
    9.         }
    10.     };

這樣程式就完成了!按下計算之後就會跑出 report 的畫面。



沒有留言:

張貼留言