2013-07-03 4 views
0

Привет Я делаю настраиваемое представление и предоставление другого идентификатора компонента в качестве ссылки в нем, как этотКак получить компонент, указанный как ссылка в пользовательском представлении?

<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); 

но я нашел tText is null, пожалуйста, сообщите мне, где я ошибаюсь, или как я могу это сделать. Пожалуйста, помогите мне.

+0

что случилось с 'findViewById (R.id.text_view);'? – ozbek

+0

его также возвращает null –

ответ

0

Ваш TextView не является дочерним элементом вашего пользовательского представления, поэтому findViewById не может его найти.

Вызов findViewById с точки зрения корня, после того, как пользовательский вид был присоединен:

protected void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    int tId = a.getResourceId(R.styleable.CustomView_associatedTextView, 0); 
    TextView tText = (TextView) getRootView().findViewById(tId); 
} 
Смежные вопросы