我有一个自定义的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?谢谢!
1 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
您无法在Constructor()期间访问子级,因为尚未加载它们并无法从XML中读取它们。LinearLayout.Constructor()是在解析XML时调用的第一个方法,并且仅在读取/解析所有子元素之后才调用,因此在Constructor()期间,它们不可访问/不可见/ ready_to_use。
请用:
@Override
protected void onFinishInflate() {
super.onFinishInflate();
}
添加回答
举报
0/150
提交
取消