2015年11月24日 星期二

[Android] Android開發教學 - 開啟其它的Activity

正常來說,一個App會包含多個Activity,也就是有許多的畫面,

這章節會教導如何切換Activity。

首先當然是加入其他的Activity,在Java資料夾底下點選右鍵,並新增新的Activity


這裡我們選擇加入一個Empty Activity,此時,Android Studio自動幫我們做了三件事

1.在AndroidManifest.xml定義了新的Activity

2.在Java資料夾中,增加了Main2Activity.java

3.在layout資料夾中,增加了activity_main2.xml

若是你使用的IDE沒有做這三件事,就必須補完這三件事,此外,若是你想要刪除這頁

你就必須把這三件事都做完

1.將AndroidManifest.xml裡面定義的Activity移除

2.刪除Java資料夾中的頁面

3.刪除layout資料夾中的xml

接著我們在第一頁加入一個Button,並且實作onClick界面。

當按下這個Button之時,會切換到第二頁。

接著要來介紹一下一個新的物件。

Intent,這是一個Android相當重要的物件,許多地方都會用到,而其中一個功能就是開啟另一個Activity。

接著你可以將你的程式碼打成以下的樣子


將Intent物件初始化,並使用setClass方法來設定你要前往的Activity。

要丟入兩個參數,假設你要從A頁到B頁。

就必須輸入 intent.setClass(A.this , B.class);

然而,你可能會在某些地方的範例看到直接在前面輸入this,可是你也這樣輸入卻有錯誤訊息跳出。

這個原因是因為我們寫在new View.OnClickListener()之中,在這裡面寫的this是指這個View.OnClickListener物件,而不是這整個MainActivity的物件,雖然看起來是在同一頁寫的,但是本質上不太一樣。

如果你還是想要寫this就好,可以將這換頁的事件整個搬出去寫,然後當按鈕按下時在去呼叫即可,此時你的程式碼可能會像這樣。


接著,你可能會想要從第一頁帶一些資料到第二頁去。

如果只是一些,可以使用putExtra來達成。

是使用Key - Value形式來儲存的。

如果對這種儲存方式不熟悉的話,可以看一下以下的例子。

intent.putExtra("Name" , "Tom");

前者是Key 後者是 Value,

假如你想取得Tom這個值的話,你就必須要使用Name這個Key來取得。

pueExtra可以傳送大部分的物件給下一頁,舉例來說。


這個例子我們儲存了Name Year到下一頁,那麼,下一頁該怎麼取得呢?

你可以這樣取得。

使用getIntent()可以拿到上一頁傳過來的Intent,並透過get來取得上一頁傳過來的值,

有些值必須填入預設值,當上一頁沒有傳值過來的話,必須要有預設值。

此外,也可以將這些值全部都放入Bundle之中,之後你的程式可以改為以下。


而取值也必須改成這樣。


並沒有強制說要用哪種形式比較好,可以根據個人喜好來決定。

根據此章節你應該能稍微了解Activity切換與傳值。

沒有留言:

張貼留言