我正在升级应用程序以删除所有合成并使用新的 ViewBinding 功能。到目前为止,只要您在您正在访问的类/布局中,一切都可以正常工作,但是我在主活动中对布局元素有综合引用。
在课堂片段中:
private var _binding: FragmentBinding? = null
val binding get() = _binding!!
private val compositeDisposable = CompositeDisposable()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
App.instance.getAppComponent().inject(this)
_binding = FragmentBinding.inflate(inflater, container, false)
return binding.root
}
在 MainActivity 我有:
private lateinit var mainBinding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(null)
mainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(mainBinding.root)
}
我有用于对话框的方法,这些方法使用合成来使片段中的布局元素变暗。例如。
//textView on fragment layout.xml
textView?.alpha = someFloat
这在合成时可以正常工作,但是我无法根据 Android 的文档使新的视图绑定工作。如何使用 ViewBinding 轻松模仿合成行为?到目前为止,它已经大量增加了代码,并且除非已创建 Fragment 的视图并且确实使代码变得更糟、更难理解,否则它不起作用。我尝试在主活动布局根视图上使用绑定,但出现“视图必须有标签”错误,并且所有布局都以<layout>
. 任何帮助表示赞赏。