文长,先感谢各位耐心看完。
程式架构是这样的:
全域变数 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
1F:推 JtsYa:fragment 通讯是用callback. activity之间用intent 11/23 19:32
2F:→ givemepass:先做看看 看遇到什麽问题在拿出来讨论 11/23 20:46
3F:→ ted66:Fragment是依附在activity上面,可以add replace remove... 11/25 10:21
4F:→ ted66:如果要取代的时候我都从主要的activity去决定replace 11/25 10:22
那我的 onClick 应该要写在 Activity 还是 Fragment 的 Java 比较好呢?
5F:→ ted66:Fragment中还可以包Fragment是没问题的,但是别包太多 11/25 10:22
6F:→ ted66:因为有很多不预期的因素会发生,先试试看应用Fragment看看 11/25 10:23
※ 编辑: Stormpanda 来自: 134.208.0.19 (11/25 11:40)
7F:→ ted66:我是写在Fragment,这样就不用去搞得很复杂哪个要换哪个 11/25 13:19