Android: как заставить findViewById (R.id.xxx) работать в классе, наследующем / расширяющемся из класса View?

У меня есть следующая проблема: я хочу добавить пользовательское представление (custom_view.xml и связанный с ним класс CustomView.java) к моей основной деятельности.

Итак, я делаю следующее:

1) В моей основной деятельности (связанной с main.xml):

CustomView customView = new CustomView(this); mainView.addView(customView); 

2) В моем классе CustomView.java (который я хочу связать с custom_view.xml):

 public class CustomView extends View { public CustomView(Context context) { super(context); /* setContentView(R.layout.custom_view); This doesn't work here as I am in a class extending from and not from Activity */ TextView aTextView = (TextView) findViewById(R.id.aTextView); // returns null ///etc.... } } 

Моя проблема заключается в том, что aTextView остается равным нулю … Кажется, это явно связано с тем, что мой custom_view.xml не связан с моим классом CustomView.java. Как я могу сделать эту ссылку? Действительно, я попробовал setContentView (R.layout.custom_view); Но он не работает (ошибка компиляции), так как мой класс распространяется из класса View, а не класса Activity.

Спасибо за вашу помощь !!

Если я получу вас правильно, вы пытаетесь создать customview из layoutfile (R.layout.custom_view). Вы хотите найти текстовое представление из этого файла макета. Это правильно?

Если это так, вам нужно раздуть файл макета с помощью контекста u have. Затем u может найти текстовое представление из файла макета.

Попробуй это.

 LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.custom_view, null); TextView aTextView = (TextView) v.findViewById(R.id.aTextView); 

Я предлагаю вам попробовать следующее:

 TextView aTextView = (TextView) ((Activity)this.getContext()).findViewById(R.id.aTextView); 

Это сработало для меня !!!

Попробуйте раздуть customView.

Во-вторых, попробуйте (я полагаю, что aTextView id присутствует в стороне CustomView)

 TextView aTextView = (TextView) mainView.findViewById(R.id.aTextView); 
Intereting Posts
Требуется ли WebView WebViewClient для работы? Как прослушать события загрузки Picasso (Android)? Возможно ли удаленно размещать ресурс, используемый в приложении для Android, таким образом, что его можно использовать только моим приложением? Разница между приложением для приложений для Android и телефоном Формат вкладки Android: ширина индикатора вкладки в отношении заголовка вкладки Android, как читать обфускацию кода Java после прохождения обратной инженерии Предотвращение пиратства приложений для Android Лучший способ отключить подкачку ViewPager Как использовать библиотеку ijkplayer Поле выбора вокруг android.support.v7.widget.SwitchCompat Переход к следующему EditText в android Как я могу заставить приложение app.iml оставаться стабильным при перестройке проекта Android Studio? Фрагмент сохраняется после удаления? Как импортировать внешнюю библиотеку в студию Android? Ошибка «Не удалось загрузить файл свойств для проекта« MJAndroid »в eclipse