文長,先感謝各位耐心看完。
程式架構是這樣的:
全域變數 String A B C D E F
Activity L Activity FM Activity FM
╭─────╮ ╭────────╮ 會先call UI Fragment
│ │ Intent >> │ Main Frame │ 讀取 A B C 值
│ │ │ Layout.xml │ get String
│ ListView │══════│ ┌─────┐ │ set 3 TextView
│ │監聽 Click │ │Fragment U│ │
│ Item │Switch case │ │UI Layout │ │ 顯示的 TextView
│ Click │改變全域變數│ │3 Buttons │ │ 依照全域變數做變換
│ Listem │A B C D E F │ │3 TextView│ │
│ │══════│ └─────┘ │ 讀取 D E F 值
╰─────╯ │ ┌─────┐ │ 依照 String 內容
│ │Fragment W│ │ 將 Button 依全域變數
│ │WebView │ │ 決定觸發事件內容
│ └─────┘ │ 監聽 onClick event
│ │
╰────────╯
============================ 問題開始 (決鬥) =============================
因為我目前只對 Intent 跟 Bundle 只有初步的認知。
想要知道 Fragment Transaction 的運作模式跟 Intent 的差異。
再來我想要按下不同的按鈕之後,能夠叫出不同 WebView,按下 Back 可以回到 UI。
目前的構思是:
回合開始! List Item Click 觸發,Intent Activity FM 同時改變全域變數。
接著使用 Inflater 裝備 UI Layout 到 Fragment U 上。
然後依照 全域變數(改) 的效果,改變 TextView 的內容。
同時 3 個 Button 也因為變數(改)而改變呼叫的內容。
再發動 FragmentManager 將 Fragment U 召喚到 Main Frame Layout 上!
3 Button click event 觸發,會傳不同的值給 Fragment W。
Fragment W 依照傳過來的值改變呼叫服務內容(網址、Google Map的座標等)
FragmentManager 召喚 Fragment W 覆蓋 Fragment U 的 Layout。
最後監聽 press back 可以回到 Fragment U 的 fragment 與其 Layout(死者甦生)。
============================ 回合結束 ====================================
想要請教如何透過 Fragment U 內的 Button click 去切換到 Fragment W?
有沒有不透過 FragmentTabHost 來切換 Fragment 的寫法?
又要寫在哪裡會比較恰當呢? Fragment U 的 java 內? 還是要直接寫在 Activity FM?
Fragment U 內部 能夠在包一個 MapFragment 或是 WebViewFragment 嗎?
作者 Stormpanda (Pika / 嵐熊貓) 看板 AndroidDev
標題 [問題] 關於 Fragment Intent 傳值的兩三問
時間 Sat Nov 23 18:43:14 2013
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.0.19
推 JtsYa:fragment 通訊是用callback. activity之間用intent 11/23 19:32
→ givemepass:先做看看 看遇到什麼問題在拿出來討論 11/23 20:46
→ ted66:Fragment是依附在activity上面,可以add replace remove... 11/25 10:21
→ ted66:如果要取代的時候我都從主要的activity去決定replace 11/25 10:22
那我的 onClick 應該要寫在 Activity 還是 Fragment 的 Java 比較好呢?
→ ted66:Fragment中還可以包Fragment是沒問題的,但是別包太多 11/25 10:22
→ ted66:因為有很多不預期的因素會發生,先試試看應用Fragment看看 11/25 10:23
※ 編輯: Stormpanda 來自: 134.208.0.19 (11/25 11:40)
→ ted66:我是寫在Fragment,這樣就不用去搞得很複雜哪個要換哪個 11/25 13:19