Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> 從Android中Activity之間的通信說開來

從Android中Activity之間的通信說開來

編輯:Android開發教程

最近兩個星期在研究android的應用開發,學習了android應用開發的基礎知識,基本控件,基本布局,基 本動畫效果,數據存儲,http訪問internet等等基礎知識。

android中有一個概念,叫做activity。什麼叫 做activity呢?中文譯為【活動】。我覺得類比到我們.NET裡面的話,就好比是WinForm中的Form窗體,或者 是ASP.NET中的Page頁面,一個activity可以對應一個窗體或者是頁面。

既然是窗體、頁面就需要通信,需 要傳值,需要之間的變換。

WinForm窗體變換和ASP.NET中的Page變換

在WinForm中實現窗體變 換,也就是一個窗體轉到另外一個窗體,我們會寫下面的代碼(代碼是偽代碼,沒有經過驗證,不保證可以運 行,只是為了說明問題)。

From frmChild=new frmChild();

frmChild.show();

或者是 frmChild.showDialog();之類的,看你需要的模態還是非模態。如果需要傳值的話,可以通過構造函數,或者 是public屬性,或者是指定parent,在child中使用parent屬性訪問父窗體,然後訪問父窗體的屬性。回傳值 也是類似的過程。網上找一下,有一大堆的示例代碼可以參考。我的博客也寫過幾篇窗體傳值的博文。

ASP.NET中頁面變換,我們可以用redirect,transfer,execute,傳值的話,有session,querystring, application,或者是整個頁面也可以。

看了上面的方式,你會發現不管是窗體或者是頁面,跳轉和傳 值都比較固定。我說的【固定】是說跳轉的發起者和目標,也就是說這兩者綁定的比較死,不能胡亂跳轉。就 好比說,detail1點擊之後只能跳轉到item1,detail2點擊之後只能跳轉到item2。當然,等你有經驗之後,改 良你的代碼,實現了item和detail的復用,然後加上一些判斷,解決了一些問題。但是好像還是感覺有點綁在 一起的意思。

Android中的Activity之間的變換

在Android中,activity之間的跳轉代碼是這樣 的。

Intent intent = new Intent( com.example.UITutorial_V2Activity.this, com.example.sinaweibo.TestActivity.class); startActivity(intent);

從上面的代碼中可以看出 來,Intent是com.example.UITutorial_V2Activity和com.example.sinaweibo.TestActivity之間跳轉的中介 。上面的代碼實現了從uitutorial到test的跳轉。任何兩個activity之間都可以這麼跳轉,完全沒有activity 之間的綁定。如果你想傳值的話,可以寫下面的代碼。

Intent intent = new Intent( com.example.UITutorial_V2Activity.this, com.example.layout.layout2Activity.class); Bundle bundle = new Bundle(); bundle.putString("key1", "value1"); intent.putExtra ("key1", bundle); startActivity(intent);

Bundle用來在activity之間傳值。回傳值是 另外的一種方法。反正都不會綁死兩個activity。任意兩個activity之間的跳轉傳值,只需要借助intent這個 中介就可以了,把目標告訴他, 傳值告訴他,他就可以完成。

聯想到的

兩個窗體變換、傳值 ,可以完全的不綁定,只需要根據窗體變換的約定,交給中介去完成這件事。這麼做會給我們帶來極大地靈活 性,體會提高復用性。也可以擴展開來,兩個類之間通信,變換,也可以使用類似的機制,避免綁死兩個類, 提高獨立性。比如說A、B、C兩個頁面。B頁面需要顯示單個商品的信息,只需要給他商品ID就可以了,然後B 會從後端獲取商品的信息來顯示。誰都可以呼叫B頁面,只要交給中介,然後傳值商品ID過來,在B頁面的創建 過程中,先獲取ID,然後從後端獲取並顯示商品信息,就可以了。在A、C中都可以調用中介來完成到B的跳轉 ,以後加個D也可以跳轉到B,不用考慮A、C、D是否存在什麼關系。

說到底,這好像是個設計問題,引 出來的編碼問題。

出處http://virusswb.blog.51cto.com/115214/629194

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved