0

嗨,我正在制作一个自定义视图并像这样在其中提供其他组件 ID 作为参考

<com.example.timerview.CustomView
    android:id="@+id/custom_view"
    android:layout_width="100dip"
    android:layout_height="100dip"
    mtv:associatedTextView="@+id/text_view"
  />
<TextView
    android:id="@+id/text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

现在我想在 CustomView.java 中使用这个 TextView 所以我在构造函数中这样做

int tId = a.getResourceId(R.styleable.CustomView_associatedTextView, 0);
TextView tText = (TextView) findViewById(tId);

但我发现tTextnull告诉我我错在哪里或者我该怎么做。请帮我。

4

1 回答 1

0

您的 TextView 不是您的自定义视图的子视图,这就是findViewById找不到它的原因。

findViewById附加自定义视图后,从根视图调用:

protected void onAttachedToWindow() {
  super.onAttachedToWindow();
  int tId = a.getResourceId(R.styleable.CustomView_associatedTextView, 0);
  TextView tText = (TextView) getRootView().findViewById(tId);
}
于 2013-07-03T21:08:59.787 回答