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

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

问题描述

在这里插入图片描述
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中已经解决了此问题。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值