gpt4 book ai didi

java - 自定义复合 View 抛出 "Error inflating class"

转载 作者:行者123 更新时间:2023-12-01 09:20:16 24 4
gpt4 key购买 nike

我制作了一个自定义复合 View :

linkui.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some Text" />

</LinearLayout>

并将其放入 Activity.xml 中:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<!-- ....Other components -->

<com.button.LinkUI
android:id="@+id/link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</RelativeLayout>

这是 View 的java类,它有一个setter setText:

public class LinkUI extends LinearLayout {

private TextView textView;

public LinkUI(Context context) {
super(context);
init();
}

public LinkUI(Context context, AttributeSet attrs) {
super(context,attrs);
init();
}
public LinkUI(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}

public void setText(String str){
this.textView.setText(str);
}

private void init() {
inflate(getContext(),R.layout.linkui,this); <---
this.textView = (TextView)findViewById(R.id.text);

}

}

根据调试控制台, View 从第二个构造函数 public LinkUI(Context context, AttributeSet attrs) 开始,然后在 View 膨胀时在 init() 处崩溃布局 R.layout.linkui,谁能告诉我膨胀 xml 有什么问题吗?

错误:

FATAL EXCEPTION: main
Process: com.site, PID: 13060
android.view.InflateException: Binary XML file line #63: Error inflating class com.button.LinkUI
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.mikepenz.fastadapter.items.AbstractItem.getViewHolder(AbstractItem.java:233)
at com.mikepenz.fastadapter.FastAdapter$OnCreateViewHolderListenerImpl.onPreCreateViewHolder(FastAdapter.java:1628)
at com.mikepenz.fastadapter.FastAdapter.onCreateViewHolder(FastAdapter.java:382)
at com.mikepenz.fastadapter.AbstractAdapter.onCreateViewHolder(AbstractAdapter.java:128)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6073)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5243)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5153)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2061)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:562)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1408)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:580)
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3374)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2901)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:703)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:770)
at android.view.View.measure(View.java:16772)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1662)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16772)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1081)
at android.view.View.measure(View.java:16772)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5139)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.support.v7.widg

我的sdk版本:

编译SdkVersion 25buildTools版本“25.0.0”

最佳答案

不要在构造函数中调用 initUi(),而在 onFinishInflate() 中调用。

关于java - 自定义复合 View 抛出 "Error inflating class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40210053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com