手機的頁面轉換與資料傳遞.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
Activity之间的数据传递.
ArrayAdapter & Spinner
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
Lab4.BMI計算.
實驗四:單位轉換程式.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
Ch06 再談選單元件 物件導向系統實務.
使用Android控制Arduino 史先强
7.3 Intent传值.
第10章 App微信分享的实现 倚动实验室.
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第9章 位置服务与地图应用.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
Ch5 Android應用程式的主要組成.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android Intent 建國科技大學 資管系 饒瑞佶 2011/1.
Chapter 6 進階UI設計.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
類別(class) 類別class與物件object.
實驗十四:顯示與控制地圖.
第2讲 移动应用开发基础知识(二) 宋婕
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
網頁切換移轉 JS vs. ASP.NET.
第8章 Service解析.
Dialog Programming What is Dialog Programming? 新增Screen與設定Attributes
Java 程式設計 講師:FrankLin.
Android 视频教程简介.
網頁切換移轉 JS vs. ASP.NET.
標籤、按鈕、工具列、狀態列 (Labels, Buttons, Tool Strips, and Status Strips)
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Ch20. 計算器 (Mac 版本).
Android Application Component
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
GUI Title and GUI Status
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
函數應用(二)與自定函數.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
第9章 BroadcastReceiver的使用
Android进程间通讯.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
加速感測器 靜宜大學資管系 楊子青.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
Part 8 Broadcast Receiver、Service和App Widget
InputStreamReader Console Scanner
Presentation transcript:

手機的頁面轉換與資料傳遞

簡介 每個activity負責一個螢幕的內容,螢幕畫面之間的切換就涉及到activity的切換

獨立的兩個頁面的轉換 當手機的畫面僅簡單的如同兩個網頁畫面的切換: 單一Activity中多個layout的切換: setContentView 多個Activity之間的切換: Intent類別

單一Activity的畫面切換 練習:請設計兩個Layout,並且在.java中利用setContentView指定要載入的Layout 建立兩個Layout的xml,兩個Layout中各自置放一個按鈕 在按鈕的OnClick事件中呼叫setContentView載入必須的Layout

配置新的.xml螢幕畫面

setContentView() private void goNextPage(){ setContentView(R.layout.next_layout); //載入名為「next_layout」的畫面檔 Button btn2=(Button)findViewById(R.id.btn2); btn2.setOnClickListener(new Button.OnClickListener(){ public void onClick(View arg0) { // TODO Auto-generated method stub goHomePage(); } }); private void goHomePage(){ setContentView(R.layout.main); //載入名為「main」的畫面檔 Button btn1=(Button)findViewById(R.id.btn1); btn1.setOnClickListener(new Button.OnClickListener(){ goNextPage();

多個Activity之間的切換 一般而言,一個Android activity連結至一個layout,因此不同layout之間的轉換,就是兩個activity之間的轉換 Intent: 傳統視窗程式中強調「事件」發生要有對應的「事件處理器」。在android中,則是提升為「程式的意圖(intent)」或者是「使用者操作的意圖」。 Intent.setClass(): 使用者意圖切換至另一個activity

練習 設計兩個頁面,並讓頁面透過各自的按鈕可以切換畫面 設計兩個layout 設計兩個activity,並且各自指定正確的layout 註冊activity於AndroidManifest.xml 初始化intent物件

建立新的activity類別 啟動「New Java Class」對話框

設定New Java Class

配置新的.xml螢幕畫面 在res/layout目錄下新增一個xxx.xml檔案 在.java檔中新增OnCreate() 「New」->「other」->「Android」->「Android XML File」 在.java檔中新增OnCreate() public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.page2); //指定必須連結的xml }

在AndroidManifest.xml中宣告新活動 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="demo.android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Test" 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 android:name="Page2"></activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>

撰寫啟動activity的程式碼 從首頁切換到第二頁 - 「下一頁」 private Button.OnClickListener btnOK=new Button.OnClickListener(){ public void onClick(View v){ Intent intent=new Intent(); intent.setClass(Test.this, Page2.class); startActivity(intent); } };

撰寫啟動activity的程式碼 從第二頁切換回首頁 - 「上一頁」 private Button.OnClickListener btnOK=new Button.OnClickListener(){ public void onClick(View v){ Intent intent=new Intent(); intent.setClass(Page2.this, Test.class); startActivity(intent); } };

相依性activity傳遞資料

練習 主畫面輸入文字資料,按下按鈕後將字串顯示於第二頁 先依照上述步驟完成兩個頁面透過按鈕互相切換 主畫面佈置一個文字輸入方塊以及一個按鈕 第二頁佈置一個標籤,以及一個「上一頁」按鈕 先依照上述步驟完成兩個頁面透過按鈕互相切換

Bundle 利用bundle機制來傳遞資料 A mapping from String values to various Parcelable types – 用於將String值對應至各個「可包裹」型別 .putString(String key, String value): Inserts a String value into the mapping of this Bundle, replacing any existing value for the given key. Bundle bundle=new Bundle(); bundle.putString("KEY_STRING", “Hello"); //將字串「Hello」封裝成一個名為「KEY_STRING」的包裹

Intent.putExtras() putExtras(Bundle extras): add a set of extended data to the intent private Button.OnClickListener btnOK=new Button.OnClickListener(){ public void onClick(View v){ Intent intent=new Intent(); intent.setClass(Test.this, Page2.class); Bundle bundle=new Bundle(); bundle.putString("KEY_STRING", edtString.getText().toString()); intent.putExtras(bundle); startActivity(intent); } };

利用Bundle接收資料 private void showResult(){ Bundle bundle=this.getIntent().getExtras(); txtDisplay.setText(bundle.getString("KEY_STRING")); } double a=Double.parseDouble(edt1.getText().toString()); double height=0; if(option1.isChecked()) height=((a-80)*0.7); if(option2.isChecked()) height=((a-70)*0.6); double Standard1=height-(height*0.1); double Standard2=height+(height*0.1); DecimalFormat df=new DecimalFormat(); Intent intent=new Intent(); intent.setClass(Ashywolf.this, Page2.class); Bundle bundle=new Bundle(); Bundle bundle1=new Bundle(); bundle.putString("KEY_STRING",df.format(Standard1) ); bundle.putString("HEIGHT",df.format(Standard2)); intent.putExtras(bundle); startActivity(intent);

練習 請試著完成一個可輸入半徑的首頁,然後第二頁可以計算並請顯示其圓面積 private void showResult(){ Bundle bundle=this.getIntent().getExtras(); txt2.setText(bundle.getString("KEY_STRING")+ bundle.getString("HEIGHT")); }