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" />

今、この TextView を CustomView.java で使用したいので、コンストラクターでこれを行っています

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 に答える