Вы не можете "видеть" TextView tvScore в коде своего пользовательского представления.findViewById()
ищет представления в иерархии, начиная с представления, из которого вы их вызываете, или из корня иерархии, если вы вызываете Activity.findViewById()
(и, конечно, это работает только после setContentView()
).
Если бы пользовательский вид представлял собой составной вид, например линейный слой, содержащий несколько текстовых представлений, то было бы целесообразно использовать там findViewById()
.
Решение - найти текстовое представление, например, в onCreate()
изатем передать его в пользовательский вид некоторым способом (например, методом set..()
).
РЕДАКТИРОВАТЬ
Если в вашем пользовательском представлении есть что-то вроде:
public class CustomView extends View {
...
TextView tvToUpdate;
public void setTvToUpdate(TextView tv) {
tvToUpdate = tv;
}
...
}
вы можете сделать что-то вроде:
protected void onCreate(Bundle bundle) {
...
CustomView cv = (CustomView) findViewById(R.id.customview);
TextView tv = (TextView) findViewById(R.id.tv);
cv.setTvToUpdate(tv);
...
}
, чтобы с тех пор у вас была ссылка на текстовое представление внутри кода вашего пользовательского представления.Это было бы похоже на какую-то установку.