1.【決策邊界|架構論述】 本篇的規則是:feature 對外只暴露 NavGraphBuilder 擴充與 navigateToXxx,Screen 不持有 NavController。假設之後有個流程要「在 A feature 選完一筆資料,回到 B feature 的上一頁並把結果帶回去」(例如選完地址回到下單頁)。這條規則還撐得住嗎?你會用什麼方式把結果帶回去;什麼條件下你會放寬規則,讓 feature 直接拿到 NavController?
我的回答:
用什麼方式把結果帶回去:
這條規則還撐得住嗎?》我看不懂。而且我也忘了 NavController 是什麼。
FragmentManager 是管理 Fragment 的底層機制;NavController 是 Navigation Component 提供的較高階導航抽象。
較高階
┌──────────────────────────────┐
│ NavController │
│ 我要去哪一頁? │
│ back stack 怎麼處理? │
│ Navigation Graph 是什麼? │
└──────────────┬───────────────┘
│
│ Fragment-based Navigation 時
▼
┌──────────────────────────────┐
│ FragmentManager │
│ add / replace / remove │
│ Fragment lifecycle │
│ FragmentTransaction │
└──────────────────────────────┘
較底層
什麼條件下你會放寬規則,讓 feature 直接拿到 NavController? 》我沒想法耶。
2.【預測再驗證|UI 與版型】 照這個順序操作:從頂層 A 切換到頂層 B,在 B 按「開啟子頁」進入子頁,再按子頁上的「從子頁切換到頂層 B」。先預測:畫面最後停在哪一頁?back stack 長什麼樣?再到模擬器或手機上實際操作驗證,對照 navigateToTopLevel 的每一個設定,解釋為什麼。
我的回答:
(待補)