为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2021-05-12 13:21:37
我有一个自定义的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();

}


查看完整回答
反对 回复 2021-05-26
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信