我有一个自定义的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?谢谢!
答案 0 :(得分:1)
您无法在Constructor()期间访问子级,因为尚未加载和从XML中读取它们。 LinearLayout.Constructor()是在解析XML时调用的第一个方法,并且只有在所有子元素都被读取/解析之后才被调用,因此在Constructor()期间它们是不可访问的/可见的/ ready_to_use。
请使用:
@Override
protected void onFinishInflate() {
super.onFinishInflate();
}