7

我的风格包含与我的main源集中相同的布局资源。这样它就可以用特定于风味的那一种来覆盖主要的那一种。我在很多地方都这样做过,在我介绍ViewBinding. 为了准确起见,布局是“包含”在片段中的嵌套布局。

这是结构:

main
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml
flavor 
 - res 
 - - layout 
 - - - layout_sign_up_details_fields.xml

til_sudf_first_name在我的主要资源中没有的特定于风味的布局资源中,我有一个视图,其 ID 为。这是有意的。View通过在运行此构建变体时查看生成的源,我可以在我的绑定类中看到这是“绑定”的。

@NonNull
public final TextInputLayout tilSudfFirstName;

protected现在实际的绑定发生在“基”类中,并使用可见性修饰符与子类共享,如下所示:

private var _binding : FragmentSignUpDetailsBinding? = null
protected val binding get() = _binding!!
protected val detailsBinding get() = binding.lSudfDetails

问题是detailsBinding不包含我需要的视图,即使它存在于生成的类中。

此外,另一个奇怪的事情是,即使main布局文件中的视图不在风味特定的布局文件中,它们仍然包含在生成的布局文件中。

我想要做的甚至可能吗?我可以使用的解决方法是像我一样对这个实例使用 kotlin 的合成视图处理,但我试图使用推荐的方法

4

1 回答 1

0

诀窍是为您的片段和视图模型使用一个共享包名称:

main
 - java
 - - MainFragment (package com.rahul.sample.<..>)
 - - MainViewModel (package com.rahul.sample.<..>)

flavor
 - java
 - - FlavorFragment (package com.rahul.sample.<..>)
 - - FlavorViewModel (package com.rahul.sample.<..>)

这样绑定就起作用了。

于 2020-08-06T20:44:11.733 回答