android頁面跳轉與傳值

Activity跳轉與傳值

  一個Android應用程序很少會只有一個Activity對象,如何在多個Activity之間進行跳轉,而且能夠互相傳值是一個很基本的要求。

  在前面創建的MyApp中,我們通過點擊按鈕可以更新當前界面上的文本內容。現在我們想換種方式,在點擊按鈕後,顯示一個新的屏幕,在這個屏幕上輸入一段話,然後再返回到原先的界面顯示剛纔輸入的那句話。

  首先我們新建這個新屏幕的佈局文件input.xml,並添加一個文本輸入框和一個按鈕(注意,xml元素的命名不要和其他佈局文件中的定義重名,因爲所有的資源都在R中進行索引,比如id,如果重名了在使用R.id.*的時候就會有問題了)。這個佈局文件對應的是一個Activity,因此我們再新建一個Input類(繼承自Activity)用於顯示這個佈局並響應事件。

  然後,還有一個重要的工作,那就是在清單文件AndroidManifest.xml中告訴程序,我定義了一個新的Activity,你可以去調用它。

  我們希望在以前的那個主界面上點擊按鈕以後可以跳轉到文本輸入界面,所以我們需要對按鈕的onClick事件進行定義:

  在這段代碼裏出現了一些新東西。首先是Intent,它是Android一個很重要的類.Intent直譯是“意圖”,什麼是意圖呢?比如你想從這個Activity跳轉到另外一個Activity,這就是一個意圖。它不但可以連接多個Activity,還可以在它們之間傳遞數據。在這裏,我們就是用Intent從MyApp對象跳轉到了Input對象。
再看緊跟着的startActivityForResult()方法,顧名思義,它可以從一個定義好的Intent對象啓動一個新的Activity,並且,這個Activity會返回執行的結果,這些內容下面馬上就會提到。

Activity跳轉與傳值

 

  好,這裏我們已經可以調出新Activity了,我們看一下執行的結果:

  你馬上可以想到,現在需要對新的Activity(Input)進行處理了。我們在點擊“確定”按鈕的時候,需要獲得上面EditText對象中的文本,然後返回到前一個Activity(MyApp)中去。看我們的按鈕事件處理:

  這裏的關鍵是SharedPreferences對象,這是在多個Activity(同一包中)共享數據的方式,本質上它就是一個可以在包的範圍內進行數據共享的文件。

  我們通過一個標籤“Text”獲得了和文本相關的那個SharedPreferences對象(“Text”僅僅是自己定義的一個標籤),然後給它賦予一個“text”對象值爲當前文本框中輸入的文本。設置完成以後,設置當前Activity的執行結果爲RESULT_OK,再關閉當前的Activity,剩下的事情就可以回到MyApp這個主界面中去執行了。

  其實剩下的事情也很簡單,在MyApp這個Activity中,我們需要重寫一個函數,onActivityResult()。因爲我們啓動Input這個Activity的時候使用的是startActivityForResult()方法,這個方法會使Input執行完以後返回給MyApp一個結果,MyApp接收到返回結果的時候會觸發onActivityResult事件,對於結果的處理就在onActivityResult()中進行。同樣,我們通過“Text”這個標籤獲得SharedPreferences對象,再把字符串從“text”對象中取出來並顯示到當前屏幕上。

  另外說明一下,requestCode是用來標識請求對象,我們剛纔在啓動Activity的時候使用的是“startActivityForResult(intent, 0)”,這裏的0就是requestCode,當然,你可以設置成任何你喜歡的值。


  我們看一下執行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章