我最近一直在探索Jetpack Compose,发现了一个非常奇怪的场景:我的@Preview没有显示,而Android Studio实际上显示为blank empty,没有显示警告或错误。当我将@PreviewParameter添加到可组合函数参数时,就会发生这种情况。
@Preview
@PreviewParameter
8ehkhllq1#
愚蠢的解决方案是...原来我在private中声明了我的PreviewParameterProvider,然后将其转换为public,或者简单地删除可见性修改器来修复它。
private
public
class MyProvider : PreviewParameterProvider<MyClass> { ... }
这甚至没有记录在案。我希望Google能在文档中明确说明,或者至少在Android Studio中给予一个错误,这样开发人员就不会遇到这种令人沮丧和浪费时间的情况。
klh5stk12#
我有另一个问题导致了同样的行为。
@Preview @Composable fun MyComposablePreview( @PreviewParameter(MyComposableStateProvider::class) state: MyComposableState ) = MyComposable(state)
@Preview @Composable fun MyComposablePreview( @PreviewParameter(MyComposableStateProvider::class) state: MyComposableState ) { MyComposable(state) }
mjqavswn3#
我还可以补充一点,PreviewParameterProvider的实现不应该是内部类,也不应该在其他类内部。
class MyFragment : Fragment() { class MyProvider : PreviewParameterProvider<MyComposableStateProvider> { ... } @Preview @Composable fun MyComposablePreview( @PreviewParameter(MyProvider::class) state: MyComposableState ) { MyComposable(state) } }
**也不起作用。**将提供程序解压缩到单独的文件中。
3条答案
按热度按时间8ehkhllq1#
愚蠢的解决方案是...原来我在
private
中声明了我的PreviewParameterProvider,然后将其转换为public
,或者简单地删除可见性修改器来修复它。这甚至没有记录在案。
我希望Google能在文档中明确说明,或者至少在Android Studio中给予一个错误,这样开发人员就不会遇到这种令人沮丧和浪费时间的情况。
klh5stk12#
我有另一个问题导致了同样的行为。
空白屏幕
工程
mjqavswn3#
我还可以补充一点,PreviewParameterProvider的实现不应该是内部类,也不应该在其他类内部。
**也不起作用。**将提供程序解压缩到单独的文件中。