猿问

无法从自定义视图访问元素

我有一个自定义的LinearLayout。它包含一个TextBox和一些其他元素。


<a.b.c.CustomLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent" 

android:layout_height="wrap_content"

>

    <TextView

    android:id="@+id/txtTitle"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="18dp"

    />

</a.b.c.CustomLinearLayout>

我有以下类,尝试从该类通过以下方式访问txtTitle元素:


public class CustomLinearLayout extends LinearLayout 

{

    public CustomLinearLayout( Context context, AttributeSet attrs ) 

    {

        super( context, attrs );


        TextView txtTitle = (TextView)findViewById( R.id.txtTitle );

    }

}

但是txtTitle始终为null。我也试图像这样访问它,但是没有任何运气:


    TextView txtTitle = (TextView)this.findViewById( R.id.txtTitle );

    TextView txtTitle = (TextView)((Activity)context).findViewById( R.id.txtTitle );

    TextView txtTitle = (TextView)context.findViewById( R.id.txtTitle );

如何从上下文访问TextView?谢谢!


智慧大石
浏览 134回答 1
1回答

汪汪一只猫

您无法在Constructor()期间访问子级,因为尚未加载它们并无法从XML中读取它们。LinearLayout.Constructor()是在解析XML时调用的第一个方法,并且仅在读取/解析所有子元素之后才调用,因此在Constructor()期间,它们不可访问/不可见/ ready_to_use。请用:@Overrideprotected void onFinishInflate() {&nbsp; &nbsp; super.onFinishInflate();}
随时随地看视频慕课网APP

相关分类

Java
我要回答