java 我可以在通常附加片段的地方附加可组合视图吗?

brc7rcf0  于 2023-02-20  发布在  Java
关注(0)|答案(1)|浏览(111)

我的项目包含JAVA和Kotlin的代码,我只有一个活动(主要),其中许多片段放在一个容器中。我想在组合屏幕上工作,这将是在Java代码调用,并应作为一个片段。
我想在JAVA文件中做类似这样的事情(调用我的屏幕):

FragmentTransaction fragmentTransaction = manager.beginTransaction();
                fragmentTransaction.replace(R.id.container, MyCompose, tag);

而MyCompos将是一个屏幕/列表与组合。

@Composable
fun makeText(){
// my custom view
}
w6lpcovy

w6lpcovy1#

我想分两步来解释。
首先,需要向片段XML文件添加一个可组合视图。

<androidx.compose.ui.platform.ComposeView
    android:id="@+id/compose_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

其次,您需要将可组合组件定义为XML可组合组件。(我建议使用视图绑定来轻松地处理这种情况。顺便说一句,如果您希望将其作为Java,请原谅Kotlin的回答)

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
): View {
        _binding = FragmentExampleBinding.inflate(inflater, container, false)
        val view = binding.root
        binding.composeView.apply {
            setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
            setContent {
                // In Compose world
                MaterialTheme {
                    Text("Hello Compose!")
                }
            }
        }
        return view
    }

相关问题