ViewBinding使用时出现Missing required view with ID: xxx 错误

问题描述

在这里插入图片描述
Android Studio版本:3.6.3
我们知道,AS在3.6版本是引入了ViewBinding功能,具体功法此处不赘述。
有时候在导入第三方使用了ViewBinding功能的项目时,会发现点击某些页面崩溃,并报如上错误。

原因分析

出现这种现象的原因一般是我们项目中使用了include布局,导致include布局中的id不能被识别。

<include
        android:id="@+id/title"
        layout="@layout/title_base">
</include>

title_base文件的布局格式如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
	......
</LinearLayout>

解决方案

  1. 去除include标签的id,比如去掉android:id="@+id/title";
  2. 使用merge标签;比如把title_base文件中的LinearLayout用merge替换;
  3. 使用bind将include所包含的布局引入进来;
    比如定义:
private ActivityMainBinding binding;
private TitleBaseBinding titleBaseBinding;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        titleBaseBinding = TitleBaseBinding.bind(binding.getRoot());

    }

使用titleBaseBinding即可获取inlcude布局中的控件。

其它解决方案

有消息说AS 4.0中已经解决了此问题。

猜你喜欢

转载自blog.csdn.net/ddnosh/article/details/105874444
今日推荐