我有一個 android 模塊 (ComposeLib) 作為與應用程式相同的專案的一部分。這只是為了測驗使用庫中的 Compose。在 Project Structure 對話框中,我添加了 ComposeLib 作為 app 的實作依賴項。

build.gradle (:app) 包含...
dependencies {
...
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.4.0-rc01'
implementation "com.google.accompanist:accompanist-appcompat-theme:0.16.0"
implementation project(path: ':ComposeLib')
...
}
Atoms.kt 在 ComposeLib 中包含...
class Atoms {
@Composable
fun CounterButton(count: Int, updateCount: (Int) -> Unit) {
Button( onClick = {updateCount(count 1)},
modifier = Modifier
.background(MaterialTheme.colors.secondary)){
Text("Clicked $count times")
}
}
}
然后在MainActivity.kt我嘗試使用CounterButton...
import com.example.composelib.Atoms
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val myComposeView = findViewById<ComposeView>(R.id.composeView)
myComposeView.setContent {
val counter = remember{ mutableStateOf(0) }
AppCompatTheme {
CounterButton( // <== Unresolved Reference!?
count = counter.value,
updateCount = {newCount -> counter.value = newCount})
}
}
}
}
正如您在螢屏截圖左下方看到的,該應用程式無法CounterButton從 ComposeLib.Atoms 中找到。知道為什么嗎?
如果我將CounterButton()應用程式放入中,則此代碼有效MainActivity,因此這不是 Jetpack 問題,而是構建配置問題。
我也試過電話排位CounterButton各種方式我能想到的(Atoms.CounterButton,public.example.composelib.Atoms.CounterButton,等)。甚至代碼完成也無法識別它。
如何@Composable從同一專案中的另一個模塊參考函式?
uj5u.com熱心網友回復:
您class Atoms出于某種原因在內部定義了 Composable ,因此應該在類實體上呼叫此函式。
定義沒有任何類的可組合函式完全沒問題,就像
@Composable
fun CounterButton(count: Int, updateCount: (Int) -> Unit) {
}
它已經在某個包裝中,所以我認為不需要任何容器。但是如果你想添加某種模塊化,你可以替換class為object,在這種情況下你可以稱之為Atoms.CounterButton
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340897.html
標籤:安卓 安卓工作室 科特林 android-gradle 插件 android-jetpack-compose
