从 java 文件调用 Jetpack Compose 元素

Ari*_*ik6 0 java kotlin android-jetpack-compose

我正在尝试使用活动中现有 XML 中的 Jetpack Compose UI 元素,使用databindingsetContent()。这是 xml 元素:

    <androidx.compose.ui.platform.ComposeView
            android:id="@+id/save_btn_compose"                 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
         />
Run Code Online (Sandbox Code Playgroud)

我在 kotlin 活动文件中使用此语法,它运行顺利:

binding.ComposeView.setContent{
    MainActionButtonKt.MainActionButton(true, R.string.complete_job, R.drawable.ic_complete_btn_icon, false);
}
Run Code Online (Sandbox Code Playgroud)

从 android 的 duc 获取

java活动文件的等效项是什么?我尝试这样做:

binding.saveBtnCompose.setContent((composer, integer) -> {
     MainActionButton(true, R.string.complete_job, R.drawable.ic_complete_btn_icon, false);
     return null;
});
Run Code Online (Sandbox Code Playgroud)

但我得到一个编译错误:

required: boolean, int, Integer, boolean, Composer, int, int
found:    boolean, int, int,     boolean

reason: actual and formal argument lists differ in length
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢 !

小智 5

您可以使用。

在其他地方创建 kotlin 函数

fun setContent(composeView:ComposeView, composeparam1: Boolean){
    composeView.setContent {
        CallYourComposeFunction(composeparam1)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后通过从 xml 提供 composeView 从您的 java 代码中调用它。