2016-10-24 2 views
0

Я сделал вид пользовательского соединения:Пользовательский вид соединения выбрасывает "Ошибка при наполнении класса"

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> 

Это класс java для вида, который имеет сеттер 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);  

    } 

} 

В соответствии с консолью отладки вид начинается со второго конструктора public LinkUI(Context context, AttributeSet attrs), затем сбой при 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:

compileSdkVersion 25 buildToolsVersion "25.0.0"

+0

Найдите первую строку в stacktrace, которая ссылается на созданный вами класс и метод. В какой строке кода это относится? –

ответ

1

Не называйте initUi() в конструкторе, вызовите его в onFinishInflate ().

Смежные вопросы