簡體   English   中英

在基本(應用程序)模塊中顯示來自動態功能模塊的片段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM