我想问一下关于ViewBinding的事。
这位官员
buildFeatures{
viewBinding = true
}但它不起作用。
下面是一个示例代码。
布局代码
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
android:clickable="true"
android:focusable="true"
android:tint="@color/white"
android:src="@drawable/ic_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />Kotlin代码
val view = inflater.inflate(R.layout.fragment_list, container, false)
view.floatingActionButton.setOnClickListener { }这个问题有什么解决方案吗?我不知道为什么它不工作。
Android studio Vierson4.1.2 Gradle Viesion 6.5
发布于 2021-02-23 16:15:35
您需要在layout.xml中使用作为父对象
示例:- my_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/_4sdp">
<TextView
android:id="@+id/scanner"
android:layout_width="@dimen/_200sdp"
android:layout_height="@dimen/_200sdp"
android:layout_centerInParent="true"
app:squaredFinder="true" />
</RelativeLayout>
</layout>在科特林。
val binding = DataBindingUtil.inflate(android.view.LayoutInflater.from(context), R.layout.my_layout, null, false);发布于 2021-02-23 16:36:19
这就是启用视图绑定的方式
private var _binding: FragmentListBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentListBinding.inflate(inflater, container, false)
binding.floatingActionButton.setOnClickListener { }
return binding.root碎片的寿命超过了它们的视图。确保在片段的onDestroyView()方法中清除对绑定类实例的任何引用。
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}有关更多详细信息,请访问read。
发布于 2021-02-23 16:39:04
试着这样做。
class BaseActivity : AppCompatActivity(){
private lateinit var binding: (YourActivityBinding)
super.onCreate(savedInstanceState){
binding = YourActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.floatingActionButton.setOnClickListener (View.OnClickListener{
})
}
} https://stackoverflow.com/questions/66329041
复制相似问题