1.配置
build.gradle文件中添加配置,然后同步。
android {...buildFeatures {viewBinding true}
}
2.用 View Binding 类来访问布局中的视图
在Activity代码的顶部导入生成的 View Binding 类:
import com.example.yourapp.databinding.ActivityMainBinding
在活动类中创建一个 View Binding 对象,并使用 inflate方法获取绑定的视图:
private lateinit var binding: ActivityMainBinding
在活动的 onCreate 方法中,使用 setContentView 方法设置活动的视图,并使用 View Binding 对象获取根视图:
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)// 现在您可以使用 binding 对象访问布局中的视图binding.textView.text = "Hello, World!"
}
3. 在Fragment中使用View Binding
在Fragment中,你可以在onCreateView中使用View Binding:
class MainFragment : Fragment() {private var _binding: FragmentMainBinding? = nullprivate val binding get() = _binding!!override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {_binding = FragmentMainBinding.inflate(inflater, container, false)return binding.root}override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)binding.someView.text = "Hello, World!"}override fun onDestroyView() {super.onDestroyView()_binding = null}
}
在Fragment中,我们需要在onDestroyView中设置_binding为null,这是因为视图可能在Fragment销毁之前就被销毁了,所以我们需要避免在Fragment和视图之间产生内存泄漏。
4.忽略View Binding
如果布局文件不需要生成绑定类,可以将 tools:viewBindingIgnore="true" 属性添加到该布局文件的根视图中:
<LinearLayout...tools:viewBindingIgnore="true" >
</LinearLayout>