Could not inflate Behavior subclass

2024-06-01 16:32

本文主要是介绍Could not inflate Behavior subclass,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了处理CoordinatorLayout + AppBarLayout + ViewPager滑动出现回弹和卡顿的现象,自定义的一个AppBarLayoutBehavior,但在运行过程中会出现java.lang.RuntimeException: Could not inflate Behavior subclass

刚开始的布局如下:

<android.support.design.widget.CoordinatorLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/color_F8F8F8"app:layout_behavior=".ui.widget.AppBarLayoutBehavior"app:elevation="0dp">..........</android.support.design.widget.AppBarLayout>..........
</android.support.design.widget.CoordinatorLayout>

问题的原因就是直接引用了这个路径

static Behavior parseBehavior(Context context, AttributeSet attrs, String name) {if (TextUtils.isEmpty(name)) {return null;}final String fullName;if (name.startsWith(".")) {// Relative to the app package. Prepend the app package name.fullName = context.getPackageName() + name;} else if (name.indexOf('.') >= 0) {// Fully qualified package name.fullName = name;} else {// Assume stock behavior in this package (if we have one)fullName = !TextUtils.isEmpty(WIDGET_PACKAGE_NAME)? (WIDGET_PACKAGE_NAME + '.' + name): name;}try {Map<String, Constructor<Behavior>> constructors = sConstructors.get();if (constructors == null) {constructors = new HashMap<>();sConstructors.set(constructors);}Constructor<Behavior> c = constructors.get(fullName);if (c == null) {final Class<Behavior> clazz = (Class<Behavior>) context.getClassLoader().loadClass(fullName);c = clazz.getConstructor(CONSTRUCTOR_PARAMS);c.setAccessible(true);constructors.put(fullName, c);}return c.newInstance(context, attrs);} catch (Exception e) {throw new RuntimeException("Could not inflate Behavior subclass " + fullName, e);}}

这个是获取文件路径的逻辑,如果以.开头将会取packageName + 名称。如果拼接完成后不等于这个文件的绝对路径将会抛出异常,所以要使用behavior的完整路径
更加规范的做法是配置到string.xml文件中

这篇关于Could not inflate Behavior subclass的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021524

相关文章

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

Hibernate插入数据时,报错:org.springframework.dao.DataIntegrityViolationException: could not insert: [cn.itc

在用junit测试:插入数据时,报一下错误: 错误原因: package junit;import org.junit.Test;import cn.itcast.crm.container.ServiceProvinder;import cn.itcast.crm.dao.ISysUserDao;import cn.itcast.crm.domain.SysRole;

mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml

在学习Mybatis的时候,参考网上的教程进行简单demo的搭建,配置的没有问题,然后出现了下面的错误! Exception in thread "main" java.lang.RuntimeException: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause:

Docker容器创建时,无法访问镜像源:Could not connect to archive.ubuntu.com:80

1.问题描述 当基于dockerfile创建容器时,遇到Could not connect to ...、Failed to fetch ...等异常时,大概原因是没有配置好容器创建所需的镜像源。这里以Ubuntu基础镜像源为例。 dockerfile内容 FROM ubuntuRUN apt update && apt install python3 -y && apt install

the following classes could not be found android.support.v7.internal.

打开XML的界面时候显示 rendering problems: the following classes could not be found android.support.v7.internal.....。 后来发现http://stackoverflow.com/questions/33742114/the-following-classes-could-not-be-fou

ValueError: could not convert string ‘date‘ to float64 at row 0, column 1.

ValueError:无法将字符串“date”转换为第0行第1列的float64。 解决办法: 通过以下代码检查自己的数据,查找问题,逐一改正。 import csvdef find_blank_or_invalid_cells(file_path):blank_cells = []invalid_cells = []with open(file_path, 'r', newline=

log4j:WARN No appenders could be found for logger解决方法

问题: log4j:WARN No appenders could be found for logger(org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly.     未找到log4j,未初始化log4j。 解决方法: <!-- 以下

解决git error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denie

昨天电脑中毒重装了系统,安装了 git 之后  设置了账户 ,邮箱 在 git clone 的时候报错, 界面如下: 然后重新用户,邮箱, 出现了这个问题,百度了很久也没解决,今天早上想着这个英文的意思 好像是权限不够,然后 我就去提示的这个文件夹下面 给了全部的权限,本人是window10 系统  给的是everyone 所有 之后在  git config --syste

nvm list available出现的 Could not retrieve https://nodejs.org/dist/index.json办法解决

好久没有用电脑的nvm list available 命令,今天晚上突然用发现趟趟趟~~ 报错 刚开始报错:是这样滴 Could not retrieve https://nodejs.org/dist/index.json.Get https://nodejs.org/dist/index.json: net/http: TLS handshake timeout 方法尝试1:重装系统

pyinstaller 打包 pyqt5 Could not find QtWebEngineProcess.exe

问题 使用 pyinstaller 打包 pyqt5 应用的时候本来运行正常,但在中文路径下不能运行。 然后,升级 pyinstaller 和 pyqt5 到最新版本,再次打包,结果英文路径也不行了,爆出 Could not find QtWebEngineProcess.exe 之后自动退出。 解决方法 很简单,只需要两步: 找到应用程序打包输出的文件夹,复制输出文件夹下的 PyQt5