[範例情境]
1.第1個Activity提供使用者輸入帳號與密碼
2.第2個Activity接收帳號密碼資訊後,依照正確與否呈現不同文字
(正確顯示Login OK;錯誤則顯示Login Error)
3.第2個Activity之「回上一頁」按鈕,按下後需保留第1個Activity之輸入值
[情境分析]
1.必須有2個Activity
2.必須有2個Layout
3.要透過Bundle傳值
SETP 1:新增專案
新增專案Homework1,新增方式請參考建立第一個Android。
SETP 2:先行加入需用到之檔案
由情境分析可知,需於本專案新增java class與xml各一,前者名為Homework1_2.java,後者名為layout2.xml,新增後之架構如下圖。
SETP 3:修改AndroidMainfest.xml
本步驟以完整圖片說明如下
AndroidMainfest.xml之Application初始畫面 |
按下上圖的Add,新增一個Activity |
賦予Name給剛剛新增的Activity |
AndroidMainfest.xml修改完畢 |
SETP 4:配置Layout
﹡第1個Layout(main.xml)
﹡第2個Layout(layout2.xml)
SETP 5:撰寫程式碼
﹡第1個Activity(Homework1.java)
重點I:Bundle
透過Bundle的各類put方法,例如putString、putDouble等,將欲傳遞之值放在Bundle準備。
重點II:startActivityForResult( i, 0 )
第一個參數是意圖(Intent),第二個參數則是任意大於零之整數皆可,若給負數則形同採用startActivity()。
在Homework1_2返回Homework1時,若用startActivity()無法保留使用者輸入的帳號/密碼,要能在Activity間傳遞前一階段的值必須使用startActivityForResult (Intent intent, int requestCode)
﹡第2個Activity(Homework1_2.java)
重點I:Bundle
透過Bundle的各類get方法,例如getString、getDouble等,將傳遞過來的值取出。
重點II:setResult (int resultCode, Intent data)
第一個參數是resultCode,告知onActivityResult本次操作是否成功,RESULT_OK是個常數,第二個參數是Intent,主要把資料回傳給前一個Activity。
用來返回前一個Activity,如果採用setResult (int resultCode) 只可單純返回無法一併傳值,因本例要維持使用者輸入的帳號/密碼,故採用setResult (int resultCode, Intent data)
SETP 6:執行
第1個Activity初始畫面 |
輸入值,準備按「傳送」鈕 |
輸入值正確,第2個Activity的TextView顯示「Login OK」文字 |
回上一頁,第1個Activity的輸入值還保存著 |
沒有留言:
張貼留言