[英]Show Fragment from Dynamic Feature Module in base (app) module?
在我的基本模塊(應用程序)中,我有一些片段。 我想將其中一個放在動態功能模塊中,該模塊將按需安裝。 在用戶決定安裝這個模塊之前,我只會顯示一個空的占位符而不是那個片段。 我知道如果它是來自動態功能模塊的活動很容易,但我真的需要在我的基本模塊活動中顯示這個片段。
這可能嗎?
您可以使用這種方式(Kotlin)
// example
val className: String
get() = "$MODULE_PACKAGE.ui.login.LoginFragment"
fun instantiateFragment(className: String) : Fragment? {
return try {
Class.forName(className).newInstance() as Fragment
} catch (e: Exception) {
// not install feature module
null
}
}
要啟用應用程序模塊和功能模塊之間的交互, one can use dependency injection or service locator pattern
。 應用程序可以找到功能模塊的實現 class 並invokes its public API which returns the fragment instance in the app module and load that in main Activity's container
。
例如:在 app 中創建 Feature 接口,在 feature 模塊中創建對應的 Impl。 然后定位/注入此 Impl class 實例並調用其 function 以獲取片段引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.