“由:java.lang.RuntimeException:视图必须有一个标记引起的”的实际含义是什么?
如果知道需要什么标签,请通知我“由:java.lang.RuntimeException:视图必须有一个标记引起的”的实际含义是什么?,java,android,android-activity,view,Java,Android,Android Activity,View,如果知道需要什么标签,请通知我 原因:java.lang.RuntimeException:视图必须有标记 __BaseActivity.java @Override public void setContentView(int layoutResID) { mBinding.contentParent.removeAllViews(); DataBindingUtil.inflate(LayoutInflater.from(this), lay
原因:java.lang.RuntimeException:视图必须有标记
__BaseActivity.java
@Override
public void setContentView(int layoutResID) {
mBinding.contentParent.removeAllViews();
DataBindingUtil.inflate(LayoutInflater.from(this), layoutResID, mBinding.contentParent, true);
super.setContentView(mBinding.getRoot());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.my_wallet);
}
__ChildActivity.java
@Override
public void setContentView(int layoutResID) {
mBinding.contentParent.removeAllViews();
DataBindingUtil.inflate(LayoutInflater.from(this), layoutResID, mBinding.contentParent, true);
super.setContentView(mBinding.getRoot());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.my_wallet);
}
错误日志
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydev}: java.lang.RuntimeException: view must have a tag
at <more...>
Caused by: java.lang.RuntimeException: view must have a tag
at android.databinding.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:121)
java.lang.RuntimeException:无法启动活动组件信息{com.mydev}:java.lang.RuntimeException:视图必须有标记
在
原因:java.lang.RuntimeException:视图必须有标记
在android.databinding.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:121)
不知道,但正在工作 这通常发生在尝试使用DataBindingUtil.inflate()
对不支持数据绑定的布局进行充气时。换句话说,您试图充气的布局的根元素不是
我在重构活动以使用数据绑定时遇到了这个问题,并且该活动有多个布局。我成功地重构了其中一个布局,在其根目录中包含
元素,但我没有重构所有其他布局(针对其他屏幕密度、语言、模块等的布局)
检查以确保所有可能匹配的布局都配置了
作为其根元素
查看此开发人员文档通常在学习android中的数据绑定时发生,我们通常使用main_activity.xml,然后包含content_main.xml,但我们错误地将
放在我身上,这是因为没有一个布局用于所有分辨率(仅在布局和布局正常时).发生这种情况是因为库的布局文件(标记错误的文件)与应用程序模块中的另一个文件同名。两者都使用了数据绑定。发生此错误的另一种情况是在RecyclerView的ViewHolder中
避免在ViewHolder的bind方法中初始化绑定实例
class BindingAdapter(private val items: List<Any>): RecyclerView.Adapter<BindingHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingHolder {}
override fun onBindViewHolder(holder: BindingHolder, position: Int) {
holder.bindItem(items[position])
}
}
class BindingHolder(view: View): RecyclerView.ViewHolder(view) {
fun bindItem(item: Any) {
//Don't do this
val binding = ItemSampleBinding.bind(itemView)
}
}
我使用的充气机没有“附件”。
此错误总是与适配器中的充气器相关的问题一起出现。请将XML布局转换为数据绑定。这可能会导致此异常
<layout>
xml components here...
</layout>
这里的xml组件。。。
我通过将布局包装在
标记中来转换布局,但我忘记将名称空间声明移动到开头的
标记:
之前
<layout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android">
之后
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<androidx.constraintlayout.widget.ConstraintLayout>
看起来您的数据绑定库(或类)有一个bug。尝试在xml中手动设置标记,如果lib没有覆盖它们,这应该可以解决您的问题。不建议(通常)将null作为父项传递,这可能会导致崩溃。您可以使用(ViewGroup)findviewbyd(android.R.id.content)
代替,并传递true
,还可以节省我的时间,谢谢!