單元51 在Action Bar上建立Tab標籤頁

Slides:



Advertisements
Similar presentations
從 Android SDK 3.0 開始增加了 2 個新的類別: Fragment 與 Action Bar 。 Fragment 提供不同佈局畫面的另一種用法,但 設計更有彈性,更能針對螢幕大小變化,採用 最合適的設計,例如對較大螢幕的平板裝置, 它可以在一個活動的畫面同時顯示 2 個 Fragment.
Advertisements

Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
第一單元 建立java 程式.
實驗五:多媒體播放器選單介面.
Part 1 學習使用基本介面元件和編排模式 單元11 學習更多介面元件的屬性 單元12 Spinner下拉式選單元件
Part 2 開發Android應用程式的流程
Part 7 Intent、Intent Filter和傳送資料
Part 2 開發Android應用程式的流程
ArrayAdapter & Spinner
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
題目:十六對一多工器 姓名:李國豪 學號:B
CH3 Eclipse.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Java簡介.
Ch06 再談選單元件 物件導向系統實務.
PDFCreator安裝教學.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
JDK 安裝教學 (for Win7) Soochow University
Outlook2010-通訊錄設定 健康國小 資訊組.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Chapter 6 Advanced UI Design.
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Chapter 6 進階UI設計.
1. 檔案File  開新New  檔案Empty File (再另存新檔D:\hello.c)
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
類別(class) 類別class與物件object.
R教學 安裝RStudio 羅琪老師.
實驗十四:顯示與控制地圖.
第13章 学院介绍 --选项卡切换效果 授课老师:高成珍 QQ号: QQ群: 、
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
檔案與磁碟的基本介紹.
Java 程式設計 講師:FrankLin.
電腦攻擊與防禦 使用電腦教室VMware軟體說明.
第一單元 建立java 程式.
VS.NET 2003 IDE.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Ch20. 計算器 (Mac 版本).
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
XILINX FPGA Download Programming
Location Based Services - LBS
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
Ch05 ImageSwitcher和GridView介面元件 View Animation動畫效果
實驗三:替代資源檔設計 (多國語言和螢幕方向背景圖設計)
如何使用Gene Ontology 網址:
CVPlayer下載及安裝& IVS操作說明
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
程式移植.
CH10 即時雲端資料庫 聊天室App.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
5. 令圖畫動起來 Tween 功能介紹 移動效果 顏色漸變效果 形狀漸變效果 離開.
實驗十:影片播放.
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
實驗七:分頁程式.
SQLite資料庫 靜宜大學資管系 楊子青.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Part 8 Broadcast Receiver、Service和App Widget
Develop and Build Drives by Visual C++ IDE
Presentation transcript:

單元51 在Action Bar上建立Tab標籤頁

Action Bar上建立Tab標籤頁 在Action Bar上建立Tab標籤頁需要用到Fragment物件。在Action Bar上建立Tab標籤頁的過程包含以下四項工作: 1. 每一個Tab標籤頁的操作介面和程式碼必須獨立建置成一個Fragment類別。每一個Fragment類別都有自己的介面佈局檔,該介面佈局檔就是Tab標籤頁的操作介面,Fragment類別中的程式碼必須各自設定自己的介面元件的事件listener。 2. 在主程式Activity的介面佈局檔中建立一個FrameLayout元件以供顯示Fragment物件。 3. 建立一個新類別實作ActionBar.TabListener介面,當我們在Action Bar中加入一個Tab標籤頁時,必須同時設定一個此類別的物件,當使用者切換Tab標籤時,系統會自動呼叫這個物件,我們在它的程式碼中完成Fragment切換的動作。 4. 將Action Bar設定為Tab標籤頁模式,另外也可以利用上一個單元介紹的Action Bar控制技巧來改變Action Bar的外觀。

範例程式 建立一個如下圖的操作介面。 4

範例程式 步驟一: 執行Eclipse新增一個新的Android程式專案,Min SDK Version欄位必須設定為11或以上。 步驟二: 在Eclipse左邊的專案檢視視窗中展開此程式專案,在「src/(套件路徑名稱)」資料夾上按下滑鼠右鍵,選擇New > Class便會出現新增類別對話盒,在Name欄位輸入「婚姻建議」的Fragment類別名稱,例如MarriSugFragment,然後按下Superclass欄位最右邊的Browse按鈕,在對話盒上方的欄位中輸入fragment,再點選下方清單中的Fragment類別,最後按下OK按鈕再按下Finish按鈕結束新增類別對話盒。 5

範例程式 步驟三: 新增的類別程式檔會自動顯示在程式碼編輯視窗中,先用滑鼠左鍵點選Class內部的程式碼,然後按下滑鼠右鍵,在出現的快選功能表中選擇Source > Override/Implement Methods…,在對話盒左邊的清單中會列出Fragment類別中還沒有使用的方法,請勾選其中的onActivityCreated()和onCreateView()然後按下OK按鈕。 步驟四: 開啟單元十六的範例程式檔,除了onCreate()方法的程式碼之外,複製Class內所有其它的程式碼,包括變數宣告,到上一個步驟的程式檔。 6

範例程式 步驟五: 將程式檔中的onActivityCreated()和onCreateView()二個方法中的程式碼編輯如下,其中的inflater.inflate()是設定此Fragment類別使用的介面佈局檔,這裡是指定使用res/layout/marri_sug.xml,在onActivityCreated()方法中呼叫setupViewComponent()完成所有介面元件的設定。 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.marri_sug, container, false); } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setupViewComponent(); 7

範例程式 步驟六: 用滑鼠右鍵點選程式專案的res/layout資料夾,選擇New > Android XML File,在出現的對話盒的File欄位輸入marri_sug然後按下Finish按鈕。新增的介面佈局檔會顯示在程式碼編輯視窗中,點選程式碼編輯視窗下面最右邊的Tab標籤切換成原始檔檢視模式,然後開啟單元十六範例程式的介面佈局檔,將其中的程式碼全部複製過來取代原來的程式碼。 步驟七: 開啟程式專案的res/values/strings.xml字串資源檔,將單元十六範例程式的字串資源檔中程式碼用到的字串,複製過來如下: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Main!</string> <string name="app_name">Action Bar 和 Tab 標籤頁</string> . . (單元十六範例程式的字串資源檔中程式碼用到的字串) </resources> 8

範例程式 步驟八: 將程式碼編輯視窗切換成MarriSugFragment的程式碼,讀者會發現在setupViewComponent()方法中還有語法錯誤,這是因為在Fragment類別中並沒有findViewById()這個方法可以取得介面佈局檔中的元件,我們必須先呼叫getView()取得Fragment的介面,再執行它的findViewById()取得介面元件如下: private void setupViewComponent() { // 從資源類別R中取得介面元件 btnDoSug = (Button)getView().findViewById(R.id.btnDoSug); radGSex = (RadioGroup)getView().findViewById(R.id.radGSex); radGAge = (RadioGroup)getView().findViewById(R.id.radGAge); radBtnAgeRng1 = (RadioButton)getView().findViewById(R.id.radBtnAgeRng1); radBtnAgeRng2 = (RadioButton)getView().findViewById(R.id.radBtnAgeRng2); radBtnAgeRng3 = (RadioButton)getView().findViewById(R.id.radBtnAgeRng3); txtResult = (TextView)getView().findViewById(R.id.txtResult); // 設定事件listener btnDoSug.setOnClickListener(btnDoSugOnClick); radGSex.setOnCheckedChangeListener(radGSexOnCheChanLis); } 9

範例程式 步驟九: 仿照步驟二到步驟八建立一個GameFragment的新類別以及它所使用的介面佈局檔,該類別的程式碼、介面佈局檔和字串資源都是從單元十七的範例程式中複製過來。 步驟十: 開啟程式專案的介面佈局檔res/layout/main.xml,在檔案中建立一個FrameLayout元件如下,這個FrameLayout元件必須設定一個id名稱,因為程式碼中會使用這個元件。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/frameLayout" </FrameLayout> </LinearLayout> 10

範例程式 步驟十一:接下來我們還要新增一個類別實作ActionBar.TabListener介面,在「src/(套件路徑名稱)」資料夾上按下滑鼠右鍵,選擇New > Class便會出現新增類別對話盒,在Name欄位輸入MyTabListener,然後按下Finish按鈕結束新增類別對話盒。 步驟十二:新增的類別會自動顯示在程式碼編輯視窗中,請加上如下粗體字的程式碼: package tw.android; import android.app.ActionBar; public class MyTabListener implements ActionBar.TabListener { } 然後類別名稱下方會出現紅色波浪底線標示語法錯誤,將滑鼠游標移到該處便會彈出一個視窗,請點選其中的Add unimplemented methods,就會在程式碼中加入需要的方法。 11

範例程式 步驟十三:將程式碼編輯如下: public class MyTabListener implements ActionBar.TabListener { private Fragment mFragment; public MyTabListener(Fragment fragment) { mFragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.add(R.id.frameLayout, mFragment, null); // 被點選的Tab標籤頁執行這個方法 public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(mFragment); // 被隱藏的Tab標籤頁執行這個方法 12

範例程式 步驟十四: 最後開啟程式專案的主程式檔,加入設定Action Bar的程式碼和建立Tab標籤頁的程式碼,請參考範例程式專案。 雖然整個過程有些繁複,但其實主要就是完成本單元開頭介紹的四項工作 13