android JetpackCompose @PreviewParameter导致预览消失

ohtdti5x  于 2023-02-11  发布在  Android
关注(0)|答案(3)|浏览(203)

我最近一直在探索Jetpack Compose,发现了一个非常奇怪的场景:我的@Preview没有显示,而Android Studio实际上显示为blank empty,没有显示警告或错误。
当我将@PreviewParameter添加到可组合函数参数时,就会发生这种情况。

8ehkhllq

8ehkhllq1#

愚蠢的解决方案是...原来我在private中声明了我的PreviewParameterProvider,然后将其转换为public,或者简单地删除可见性修改器来修复它。

class MyProvider : PreviewParameterProvider<MyClass> {
    ...
}

这甚至没有记录在案。
我希望Google能在文档中明确说明,或者至少在Android Studio中给予一个错误,这样开发人员就不会遇到这种令人沮丧和浪费时间的情况。

klh5stk1

klh5stk12#

我有另一个问题导致了同样的行为。

空白屏幕

@Preview
@Composable
fun MyComposablePreview(
    @PreviewParameter(MyComposableStateProvider::class) state: MyComposableState
) = MyComposable(state)

工程

@Preview
@Composable
fun MyComposablePreview(
    @PreviewParameter(MyComposableStateProvider::class) state: MyComposableState
) {
  MyComposable(state)
}
mjqavswn

mjqavswn3#

我还可以补充一点,PreviewParameterProvider的实现不应该是内部类,也不应该在其他类内部。

class MyFragment : Fragment() {

  class MyProvider : PreviewParameterProvider<MyComposableStateProvider> {
    ...
  }

  @Preview
  @Composable
  fun MyComposablePreview(
    @PreviewParameter(MyProvider::class) state: MyComposableState
  ) {
    MyComposable(state)
  }
}

**也不起作用。**将提供程序解压缩到单独的文件中。

相关问题